I built a Python tool for scraping tournament data from chess-results.com
Posted: Sat Aug 15, 2026 10:11 am
I wrote a small Python tool that hands you a tournament's data in a form you can work with: standings, or a full per-player history — who each player met, what colour, whether they floated or took a bye — as a command-line report, a printable pairing sheet, or JSON.
Swiss Manager uploads results to https://chess-results.com after every round — so if the laptop running it dies mid-event and nobody can lay hands on the licence, this tool can pick that data back up, hand it to a free pairing program, and produce the next round without it. I've tested that path with https://github.com/BieremaBoyzProgramming/bbpPairings (free to download), but anything similar should work.
A few honest caveats if you're leaning on it that way:
Code and docs: https://github.com/markjonleonard/chess-results
Questions and real-event bug reports very welcome — especially if your tournament's page doesn't match the layouts I've tested against.
Code: Select all
pip install chess-results
$ chess-results standings 1452107 --after 6
2026 British Chess Championships: Championship — after round 6
1 5 2 GM Adams, Michael
2 5 3 GM Royal, Shreyas
3 5 4 IM Grieve, Harry
4 5 6 IM Bazakutsa, Svyatoslav
5 4½ 7 IM Harvey, Marcus R
6 4½ 9 IM Czopor, MaciejA few honest caveats if you're leaning on it that way:
- You need internet at the venue.
- Standard Swiss only — no round robins or the more exotic formats.
- It can only work from the last round Swiss Manager managed to upload. If the laptop died before those results went up, that round's gone with it.
- Treat the output as a fair, legal pairing — not necessarily the exact one Swiss Manager would have made.
Code and docs: https://github.com/markjonleonard/chess-results
Questions and real-event bug reports very welcome — especially if your tournament's page doesn't match the layouts I've tested against.