Async Chess.com public API client
This project has been archived.
The maintainers of this project have marked this project as archived. No new releases are expected.
Project description
chesscom-guru
Async Python client for the Chess.com Public API.
Built on aiohttp with automatic retries for rate limits and server errors. Doesn't mess with your logging config. Supports time-based filtering and concurrent month fetching.
Install
pip install chesscom-guru
Requires Python 3.9+.
Quickstart
import asyncio
import aiohttp
from chesscom_guru import ChesscomAPI
async def main():
async with aiohttp.ClientSession() as session:
api = ChesscomAPI(session, user_agent="my-app/1.0")
profile = await api.get_player("erik")
print(profile.get("username"), profile.get("country"))
data = await api.get_games("erik", max_concurrency=8)
print("months fetched:", len(data["months"]))
first_month = next(iter(data["months"].values()))
print("games in first month:", len(first_month.get("games", [])))
asyncio.run(main())
You can also pass a custom user agent via headers:
api = ChesscomAPI(session, headers={"User-Agent": "my-app/1.0"})
Return structure
get_games() returns a dict with these keys:
{
"username": "erik",
"archives": ["https://api.chess.com/pub/player/erik/games/2024/06", ...],
"months": {
"https://api.chess.com/pub/player/erik/games/2024/06": {
"games": [{...}, {...}, ...]
# full month payload from chess.com
}
},
"errors": {
"https://...": "ClientError(...)"
# month URLs that failed to fetch
},
"from_ts": "2024-01-01T00:00:00+00:00", # or None
"to_ts": "2024-06-30T23:59:59+00:00" # or None
}
If a monthly archive fails to fetch, it shows up in errors but doesn't kill the whole request.
Time filtering
Pass from_ts and/or to_ts as datetime objects to filter by game end time. Both should be UTC (naive datetimes are assumed to be UTC).
from datetime import datetime, timezone
from_ts = datetime(2024, 1, 1, tzinfo=timezone.utc)
to_ts = datetime(2024, 6, 30, 23, 59, 59, tzinfo=timezone.utc)
data = await api.get_games("erik", from_ts=from_ts, to_ts=to_ts)
The filter works in two passes: first it skips months outside your time range, then it filters individual games by end_time within the months that remain.
Concurrency control
max_concurrency limits how many month requests run in parallel:
data = await api.get_games("erik", max_concurrency=5)
Default is 10. If you're hitting rate limits, lower it. If you want faster fetching and the API can handle it, raise it.
Logging
The library uses Python's standard logging but doesn't configure anything by default. If you want to see retry warnings or debug output:
import logging
logging.basicConfig(level=logging.WARNING)
Set level to INFO or DEBUG for more detail.
API methods
ChesscomAPI(
session,
base_url="https://api.chess.com/pub",
timeout_sec=20,
user_agent="chesscom-guru/0.1.0",
headers=None
)
api.get_player(username)
api.get_archives(username)
api.get_games(username, max_concurrency=10, from_ts=None, to_ts=None)
License
PolyForm Noncommercial 1.0.0 — free for noncommercial use.
Commercial licensing: richramsell@proton.me
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file chesscom_guru-0.1.4.tar.gz.
File metadata
- Download URL: chesscom_guru-0.1.4.tar.gz
- Upload date:
- Size: 7.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.9.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e3b939b42703c8b37cc7f20ce1567bc16655640ed06f63fdcad254c354ba7728
|
|
| MD5 |
d09fd0c20f29f1e307936ad2fb4d77ff
|
|
| BLAKE2b-256 |
e2658a24aa2d605917e01778cb3691e6eecf27743f5f98487c0e89d8d473c226
|
File details
Details for the file chesscom_guru-0.1.4-py3-none-any.whl.
File metadata
- Download URL: chesscom_guru-0.1.4-py3-none-any.whl
- Upload date:
- Size: 8.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.9.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
19dea04c9edcfddc64ffdd18c0c013167fe5cd8621beb5bb97b72ac7e9dd94cd
|
|
| MD5 |
ac152b4f3d9a1a83f5fb2018dcefabfe
|
|
| BLAKE2b-256 |
7b49122faa7f6ec4a4b335edbabdb5f557a34af08c95f5d2095e223d2c8da6aa
|