KenoSpots Keno Results API

The canonical, developer-friendly source for live keno and Quick Draw results across 20+ US states and Canada. Free JSON, no API key required to get started.

KenoSpots aggregates official state and provincial lottery feeds into one clean, predictable JSON API. Whether you are building an app, a dashboard, or an AI agent that needs structured keno data, this endpoint gives you the latest draws in a single request.

Quickstart

Fetch the latest Massachusetts Keno draws with a single GET request. No authentication, no headers required.

# Latest Massachusetts Keno results
curl https://app.kenospots.com/api/results/mass-keno

The response is a JSON object with a draws array, newest draw first. Read on for the full field reference and the complete list of supported games.

Endpoint

There is one endpoint. Swap the {slug} for any supported game (see Game slugs).

GET https://app.kenospots.com/api/results/{slug}

Base URL

https://app.kenospots.com

OpenAPI specification

Prefer a machine-readable contract? The full endpoint, schema, and examples are published as an OpenAPI 3.0 spec. Import it into Postman, Swagger UI, or your code generator of choice, or point an AI agent straight at it. AI assistants can also start from our llms.txt (or the fuller llms-full.txt) for a plain-text map of the site and API.

https://kenospots.com/api/openapi.json

Path parameters

ParameterTypeDescription
slug string The game identifier, for example mass-keno or ohio-keno. Required. See the full catalog below.

Example requests

# Ohio Keno
curl https://app.kenospots.com/api/results/ohio-keno

# New York Quick Draw
curl https://app.kenospots.com/api/results/ny-quick-draw

# OLG Daily Keno (Ontario, field of 1-70)
curl https://app.kenospots.com/api/results/daily-keno

# JavaScript (fetch)
const res = await fetch('https://app.kenospots.com/api/results/mass-keno');
const { draws } = await res.json();
console.log(draws[0].winningNumbers);

# Python (requests)
import requests
draws = requests.get('https://app.kenospots.com/api/results/mass-keno').json()['draws']
print(draws[0]['winningNumbers'])

Response format

Every request returns 200 OK with a JSON body containing a draws array ordered newest first. An unknown slug returns 404. Here is a trimmed example response:

{
  "draws": [
    {
      "drawNumber": 3023269,
      "drawDate": "2026-06-24",
      "drawTime": "2026-06-24T17:12:00-04:00",
      "timezone": "America/New_York",
      "winningNumbers": [75, 65, 62, 31, 52, 27, 66, 12, 7, 30, 46, 10, 58, 2, 76, 32, 29, 45, 61, 59],
      "ballsDrawn": 20,
      "bonus": 1,
      "multiplier": null,
      "multiplierType": "booster",
      "extraNumbers": [],
      "bullseyeNumber": null,
      "jackpotAmount": null,
      "source": "Massachusetts Lottery feed",
      "kenospotsUpdatedAt": "2026-06-24T21:13:04.512Z",
      "freshnessStatus": "live",
      "expectedUpdateFrequency": "every few minutes",
      "isOfficial": false,
      "disclaimer": "KenoSpots is an independent informational site. Verify prizes with the official lottery."
    }
    // ... more draws, newest first
  ]
}

Field reference

Each object in the draws array describes one draw. Optional fields are populated only for games that report them and are null or empty otherwise.

FieldTypeDescription
drawNumberintegerThe official sequential game number for the draw. Useful as a stable identifier and for ordering.
drawDatestringThe draw date in YYYY-MM-DD format, in the game's local timezone.
drawTimestring | nullThe draw time as an ISO 8601 timestamp with the game's local UTC offset, derived from the draw date and timezone. Useful for games that draw every few minutes, where the date alone is not enough to order draws. null when no usable draw date is available.
timezonestringThe IANA timezone the draw date and time are expressed in, for example America/New_York.
winningNumbersinteger[]The drawn numbers, in draw order. Standard keno draws 20 numbers from 1-80; some Canadian games draw from a field of 1-70.
ballsDrawnintegerHow many numbers were drawn (typically 20).
bonusintegerThe bonus or multiplier value applied to the draw, where the game supports it (often 1 when no enhanced multiplier is in play).
multiplierinteger | nullThe active multiplier for games that draw one separately from bonus. null when not applicable.
multiplierTypestring | nullThe name of the multiplier feature for the game, for example booster.
extraNumbersinteger[]Any supplementary numbers some games draw in addition to the main 20. Empty for most games.
bullseyeNumberinteger | nullThe Bullseye number for games that offer a Bullseye add-on. null otherwise.
jackpotAmountnumber | nullThe reported jackpot amount where the game publishes one. null otherwise.
sourcestringHuman-readable name of the upstream feed this result was sourced from, for example Massachusetts Lottery feed.
kenospotsUpdatedAtstring | nullISO 8601 timestamp (UTC) of when KenoSpots last fetched and cached this result.
freshnessStatusstringHow frequently this feed publishes new draws. One of live (draws every few minutes), hourly (refreshes roughly once an hour), or daily (publishes a batch each day).
expectedUpdateFrequencystringHuman-readable cadence at which this feed updates, for example every few minutes.
isOfficialbooleanAlways false. KenoSpots is an independent informational resource, not the official source of results.
disclaimerstringStandard disclaimer reminding consumers to verify prizes with the official lottery.

Game slugs

The following games are available today. Pass the slug as the {slug} path parameter. We add states and games regularly, so check back or email us to request one.

United States · 1-80 field

MassachusettsKenomass-keno
OhioKenoohio-keno
MichiganClub Kenomichigan-club-keno
CaliforniaHot Spotcalifornia-hot-spot
New YorkQuick Drawny-quick-draw
New JerseyQuick Drawnew-jersey-quick-draw
PennsylvaniaKenopennsylvania-keno
VirginiaKenovirginia-keno
MarylandKenomaryland-keno
KentuckyKenokentucky-keno
GeorgiaKenogeorgia-keno
OregonKenooregon-keno
ConnecticutKenoconnecticut-keno
KansasKenokansas-keno
Rhode IslandKenorhode-island-keno
New HampshireKeno 603new-hampshire-keno
MissouriClub Kenomissouri-keno
DelawareKenodelaware-keno
Washington DCKenodc-keno
WyomingKenowyoming-keno

Canada

British ColumbiaBC Keno · 1-80bc-keno
OntarioOLG Daily Keno · 1-70daily-keno
Atlantic CanadaKeno Atlantic · 1-70keno-atlantic

Rate limits

The free tier is rate limited to keep the service fast and reliable for everyone:

TierLimitAuth
Free60 requests / minute per IPNone required

Draw data refreshes roughly every 60 seconds, so polling faster than once a minute per game offers no fresher data. Please cache responses where you can. Clients that exceed the limit receive an HTTP 429 response; back off and retry after a short delay. If you need a higher ceiling, see paid tiers.

Powered by KenoSpots

The API is free for personal and commercial use, and we just ask one thing in return: visible attribution. If you publish or display data from this API, credit KenoSpots with a link back to kenospots.com.

Required attribution

Display a clear "Powered by KenoSpots" credit with a link, for example:

<a href="https://kenospots.com/">Keno data powered by KenoSpots</a>

Attribution helps us keep the free tier free. Please do not resell raw API responses or present the data as your own. Always verify winning tickets against the official lottery; KenoSpots is an independent informational resource and is not affiliated with any lottery commission.

Future paid tiers

The free endpoint covers the latest draws for every supported game. For heavier or commercial workloads, paid tiers are on the roadmap:

CapabilityWhat it adds
Historical dataFull draw history with date and game-number range queries, beyond the recent window.
WebhooksPush notifications the moment a new draw posts, so you never poll.
Bulk & export accessHigher rate limits, bulk endpoints, and downloadable datasets for analytics.
SLA & supportPriority support, an uptime commitment, and an API key for usage tracking.

Interested in early access? Email api@kenospots.com and tell us what you are building.

Contact

Questions, slug requests, bug reports, or partnership ideas, we want to hear from you. Reach the API team at api@kenospots.com.

Browse Live Results Odds Calculator Email the API Team