Skip to main content

Python client for Chess.com API

Project description

Python client for Chess.com Public API

GitHub Workflow Status (event) PyPI PyPI - Downloads

Python client for Chess.com API which provides public data from the chess.com website.

Installation

The package requires Python 3.8 or higher.

Install latest version from PyPI pip install chess.com

Resources

Usage

Retrieving Data

The package uses aiohttp for asynchronous requests and requests for synchronous requests to interact with the API.

Using client instance

from chessdotcom import ChessDotComClient
   
client = ChessDotComClient(user_agent = "My Python Application...")

response = client.get_player_profile("fabianocaruana")

response.player.name # 'Fabiano Caruana'
response.player.title # 'GM'
response.player.last_online_datetime # datetime.datetime(2024, 10, 25, 20, 8, 28)
response.player.joined_datetime # datetime.datetime(2013, 3, 17, 15, 14, 32)
# See readthedocs for full documentation of responses

# or access the source
response.json['player']['name'] # 'Fabiano Caruana'

Using functions

from chessdotcom import get_player_profile, Client
   
Client.request_config["headers"]["User-Agent"] = (
    "My Python Application. "
    "Contact me at email@example.com"
)
response = get_player_profile("fabianocaruana")

Asynchronous

from chessdotcom import ChessDotComClient

client = ChessDotComClient(user_agent = "My Python Application...", aio = True)

usernames = ["fabianocaruana", "GMHikaruOnTwitch", "MagnusCarlsen", "GarryKasparov"]

cors = [client.get_player_profile(name) for name in usernames]

async def gather_cors(cors):
    return await asyncio.gather(*cors)

responses = asyncio.run(gather_cors(cors))

Managing Rate Limit

Every function accepts a tts parameter which controls the number of seconds the Client will wait before making the request. This is useful if running a lot of coroutines at once.

cors = [get_player_profile(name, tts = i / 10) for i, name in enumerate(usernames)]

The second method is to pass rate_limit_handler option to the client.

from chessdotcom import RateLimitHandler

client = ChessDotComClient(
    rate_limit_handler = RateLimitHandler(tts = 4,retries = 2)
)

If the initial request gets rate limited the client will automatically retry the request 2 more times with an interval of 4 seconds.

Available Endpoints

Player Data

Clubs

Tournaments

Team Matches

Countries

Daily Puzzle

Other

Reporting Issues

Chess.com API is subject to change. Smoke tests are ran daily to make sure the package is working correctly.

Please open an Issue if you spot any bugs.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

chess_com-3.13.0.tar.gz (23.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

chess_com-3.13.0-py3-none-any.whl (49.8 kB view details)

Uploaded Python 3

File details

Details for the file chess_com-3.13.0.tar.gz.

File metadata

  • Download URL: chess_com-3.13.0.tar.gz
  • Upload date:
  • Size: 23.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.13

File hashes

Hashes for chess_com-3.13.0.tar.gz
Algorithm Hash digest
SHA256 e06eb6d7740011574e4af9ea0e808a96d4bddade85dee76ff595bf26369bc1fd
MD5 482188fa9bddd19426367bf5f547bcf5
BLAKE2b-256 59d251ebf748fb337e2acb351598ecc9f58d8e967cb77cc60e1882452a606d3d

See more details on using hashes here.

File details

Details for the file chess_com-3.13.0-py3-none-any.whl.

File metadata

  • Download URL: chess_com-3.13.0-py3-none-any.whl
  • Upload date:
  • Size: 49.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.13

File hashes

Hashes for chess_com-3.13.0-py3-none-any.whl
Algorithm Hash digest
SHA256 11fe0999a681b93385c8d5dabf9d692e734fa250fbe58e3717f9f7cb98f98981
MD5 786b1fe27c1dc33d22fd038ff19a4d78
BLAKE2b-256 e9f4ef4860a2be9b2f6d4f7126c181f3554b711e577ec1e7613eeefb886f7ab6

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page