I have some future plans for these pages, of course!
I've now also finished parsing the Euro Millions and Euro Hotpicks XML, which wasn't too bad. There is a separate script run when there are multiple prizes for the Millionaire raffle - I adjusted the CSV URL in the script, but haven't actually tested it yet against a multi-prize raffle.
Next up, I'll start working on parsing the XML files for the full results - one interesting thing is that the XML file contains an exact estimate (to the nearest pound) of the next draw's jackpot prize pool. For example, it claims tonight's main Lotto will have a figure of exactly £5,013,960 and it also provides a short-form version of £5.0m which would be more sensible to display I suspect! I might see if I can use this estimate rather than the one I currently do using some calculations on based on previous jackpot sizes for the same day's recent draws.
Lukcily, XML for the latest full draw info is available, though I've yet to find a way to get older draws. Obviously the CSV downloads are still available, albeit at new URLs which include a game ID (mostly logical except Euro Millions gets ID 33 way out on its own for some reason).
Here's a summary table of where to get the info if you're after parsing it yourself though, as I said, you'll have to grab the XML for every latest draw before the next draw occurs (because it will only return the latest draw):
| Draw type | CSV (180 days) | XML (latest only) |
|---|---|---|
| Main Lotto | Download | Download |
| Lotto Hotpicks | Download | Download |
| Set For Life | Download | Download |
| Thunderball | Download | Download |
| Euro Hotpicks | Download | Download |
| Euro Millions | Download | Download |
It should be noted that you don't really need the Lotto Hotpicks or Euro Hotpicks CSVs because they just contain a subset of the non-Hotpicks versions (e.g. no non-main balls because they are ignored in Hotpicks). You will need the Hotpicks XML files of course since they have prize/winners info that the CSVs don't.
It turns out that despite me putting /cgi-bin/ in robots.txt as a "do not load" URL for any spider (I don't want spiders to ever run the only non-static part of the site), there's plenty of spiders who egregiously ignore robots.txt, fake a browser user agent string and load /cgi-bin/lottery anyway. They then get "stuck" in the never-ending link maze that is the Number Palace page and hence the massive number of requests from these "illegal" spiders.
The fix was straightforward - none of these dodgy spiders provide a legitmate referrer URL (it's blank), so if there's a request to /cgi-bin/lottery?Action=Palace without a referrer URL string, then the request is blocked. I did this initially via Apache on the back-end server, but later on also implemented it as a security rule in Cloudflare because the bad robots didn't back off trying to load /cgi-bin/lottery?Action=Palace despite them all getitng 403 forbidden code returned.
Previous month: December 2025