There's this Accuracy feedback after every game, but how about the Elo you played like? Throw millions of games from chess.com to train some AI machine and feedback every player after his game what Elo he played like, could be a cool feature IMO.
Tricky_Dicky Aug 4, 2022
Found two significant errors in end point https://api.chess.com/pub/match/1401215 CC22 Under 1300 Group A Round 4 Devon Chess v Team Dorset Player @jim78 daily rating changed two days ago but is still incorrectly classed in this match as 'Out of rating range' @dhalllawrence was FPV closed three weeks ago. In these matches score is still show as the board finish and not defaulted to opposition win because game archive icon is shown as 'Account closed' not 'Closed: Fair play' https://www.chess.com/club/matches/1385887 https://www.chess.com/club/matches/1356341 https://www.chess.com/club/matches/1350997 The match scores are inconsistant with the aggregated board scores. Also still waiting for the country code login to be resolved after 6 months https://api.chess.com/pub/country/{iso}/players I get the impression the API is no longer of any interest to Chess.com
Tricky_Dicky Jul 25, 2022
This follows from discussion in notes, transferring here @bcurtis' request. 1. Having player_id and group_id be guaranteed to be continued to be provided(*) would be of benefit as account names may both be changed and reused, and prior to club_id appearing (perhaps it was always there, and I missed it?) there was no way to track group name changes. Club name changes are critically important for the many team-based competitions on chess.com, such as TMCL (Team Match Championship League) that @stephen_33 helps run. (club_id 35246). (OK, https://api.chess.com/pub/club/team-match-championship-league) Group name changes are not uncommon: France/Deutschland Group changed to France-Deutschland Group to make something easier (I don't recall the details) and Great Viking Warriors changed name temporarily to Asger's Great Viking Warriors and then decided to make the change permanent. A number of Australian city/state teams regularised their names. (To a format I don't like, but hey, wasn't my decision.) User name changes are not uncommon either, and it is useful to have an unchanging reference when tracking members (who has played in what matches?) if any cached data is involved (and long-lasting groups play a lot of matches). A consistent player_id is also useful when tracking potential trolls, abusive members and cheats 2. An endpoint to find a member by player_id saves having to stumble across them, or else try to track every active chess.com member and their current profile 3. An endpoint to find a club by club_id would ease running competitions via tools using api.chess.com, as the club_id can be recorded as the competition entrant and competition administrators don't even need to be told of club name changes; they will be obvious. From the current documentation: (*)Note: the "player_id" is provided as a convenience to determine when a username has been changed. If you retrieve a Player Profile by the username-based URL linked from a Game or other object, and this new Player Profile has a "player_id" that matches a Profile you previously downloaded, then you can safely assume that this new Profile replaces the old, and all URLs with the previous username will now be found under the new username. This should be an extremely rare occurrence. This "player_id" will never change for a given account, however the future availability of this ID is not guaranteed.
stephen_33 Jul 24, 2022
G'day everyone. I'm putting together a website and I'd like to use the embeddable iframe share option that chess.com offers to display certain games. But, I'd prefer to do this programmatically. I get the latest games for relevant players daily already and store most of the returned JSON in a DB, but cannot find anything about generating or retrieving that embeddable iframe html. Has anyone done this in the past or know a good place to start? I know I could always use a PGN viewer as I already save the PGN, but chess.com's iframe is basically exactly what I want. Thanks!
I'm looking over the site's REST API and wondering if there is way to download all of my games where a brilliant move was played or annotated by an engine (agnostic of which side had the move)? I don't need to find the brilliancies as part of the API call, but I would like to pull all of the games that have engine analysis, along with the annotations of course. Does anyone know if this is possible to do?
Luke_Thighwalker Jul 15, 2022
Was trying to find a way to pull scheduled live events from a club's Upcoming List. Is there something in the API I've missed?
When calling https://api.chess.com/pub/puzzle/random, the URL in the 'url' field redirects to the Daily Chess Puzzles main page rather than to the puzzle. Example URL: https://www.chess.com/forum/view/daily-puzzles/362014---mate-in-6
Hi devs. I have a few different ideas for data-science projects based on chess.com data. Ideally what I'd like for most of these projects is a random sample of games or players, etc. However, I'm struggling to understand how to best use the API to get useful information of this kind. I have published a few blog posts using data from the other website, which publishes monthly archives of all games played on the site. Being a snapshot of all games in a month, this is more or less the kind of random sample I'm after. As I understand it, chess.com does not publish similar archives like this, either directly on the website or through the API. (I have read through some of the reasons why chess.com chooses not to publish archives.) So, I thought about a few ways to get random samples of data from the API description, such as: Iterating through players from a particular country, and then using the player endpoint. However, as mentioned elsewhere, there is a limit of 10000 players per country via the API. This seems problematic for a few different reasons in taking a random sample from a large enough chess-playing country. Iterating through tournament endpoints (which I discovered are numbered somewhat sequentially), but once again it's not really random sampling as not everyone plays tournaments (and choosing just from tournaments would bias the sample). Scraping (I'd rather not do this for so many different reasons). So, are there any ideas for either: a) generating random sample of games or players from the chess.com API or b) publishing snapshots (or archives) of chess.com activity perhaps through the API? Thanks.
I'm just wondering if there are any guidelines on the legality of reproducing or republishing chess.com data elsewhere. I am working on a few ideas for chess data-science projects and it'd be great to be able to publish datasets on other sites (e.g. Kaggle). The user agreement, as I'd expect, (and as far as I can tell) states that we're not allowed to "upload, post, email, transmit or otherwise make available" anything, but obviously the provision of the public APIs means that chess.com wants us to use data elsewhere for various purposes. Obviously what I'm envisaging is not wholesale copying of game archives but could be derived datasets, like: players/ratings game outcomes derived info from the pgns (openings, captures, tactics, score evaluations, etc.) pgns themselves? (who actually owns the copyright on a chess pgn anyway?) Here's one example of a dataset republished from data derived from the other site on kaggle: https://www.kaggle.com/datasets/mysarahmadbhat/online-chess-games. A dashboard-like example is http://chessleagues.com/. Copyright considerations of blog posts of data analysis from chess.com API data (rather than publishing the data itself) on data analysis of chess.com derived data is something else I've been thinking of too. Are there any issues with something like that? Any guidance that dev community members or admins could provide would be helpful in what is legal and/or acceptable in relation to this would be very much appreciated. Thanks.
Mensch-Maschine Jun 19, 2022
Hello! I need Stats of a Player for the last 30 days in Rapid, Blitz, and Bullet. How can I do that via Published-Data API?
Hyper-Dragon Jun 13, 2022
Is it possible to download a club's notes in the same way it is a forum topic? I've made the notes in my club 'public' temporarily but when I request a (web) page I'm receiving a HTTP 403 response - access not allowed. I'm puzzled because if I'm allowed to do a similar thing in any topic in my club, why not for club notes?
stephen_33 Jun 5, 2022
I'm using a routine written in Python to extract information (team names, game types, time control etc.) from (scraped) match challenges in a league I help with and it's been producing very useful results. But I've just hit a small problem because the name of one team in a match that's being challenged appears as "ONE WORLD League PLAYERS' LOUNGE" in the challenge but my input file of teams has the plain english "ONE WORLD League PLAYERS' LOUNGE" (these are loaded into a dictionary). And that's giving me 'KeyError' every time I look the team name up. This seems to be a simple case of one encoding not matching another and for now I've cured the problem by replacing all "#039;" substrings with "'" but is there a simpler way of doing it? Some club names include quite exotic characters and I'd like to find a generic solution if possible.
stephen_33 Jun 3, 2022
Today someone asked me again about clean play in some vote chess games. Which pushes me again to ask for the ability to download vote chess games as I can download an individual member's games. For the most basic solution, all I want is the PGN archives. If (either) the JSON endpoint or PGN endpoint was replicated for team's vote chess games I would be delighted. Some features would be "nice to have" but are certainly not essential and I'd prefer the basic endpoint(s) sooner rather than endpoints with these features later: Players for each team Team private notes per move (which become public when the game finishes) Public notes per-game which are always public. In the case of each of the points above I would again simplify if that helps add the feature: Posted diagrams are desirable(*) but not required Embedded images are not required External URLs are not required except as plain text references Text may be plain (colour, font, size, etc ignored). (*) I'm not sure how these would be best provided. FEN plus PGN perhaps with each post as a separate JSON item for that move? Anyway, a "round two" not an initial feature IMHO unless of course it's easier to include. If text notes and URLs were provided as HTML that would be quite acceptable, including being provided that way only without any "simple text" translation/transliteration. For me something like Rich Text Format would be less good than HTML. Any Javascript I would prefer be dropped. Thanks for listening, Giles
ImperfectAge May 28, 2022
I have dealt with quite a few cases of people letting the timer run out instead of resigning recently, and thought it might be a good idea to share an idea I had that may make dealing with stallers a little easier. I was thinking it might be a good idea to collect data from many different games played on chess.com, storing the time taken per move and the engine evaluation at each step, along with whether either player was reported for stalling/quitting. You could then use the time taken per move and the engine evaluation, among other things, as input data to a neural network, and train the neural network to predict the probability of one player reporting the other. I think this would probably be a good because it would make it easier for people at the site to deal with large numbers of reports. A well-trained neural network could look automatically for stallers and detect repeated patterns of stalling before letting a human make the final call. It could also be used to filter out false positives, or prioritize reports based of their likelihood of being valid. I do think that something like this could work, but am not sure whether, and to what extent, AI is used for these kinds of things on this site. Maybe people can let me know what they think.
After I had failed, the queen was still moveable, and I could capture everything, even my own pieces, and, the board squares, normally green and white, turned indigo and purple
Martin_Stahl May 4, 2022
Hello peeps, Have some pgns and I would like to get the corresponding accuracy (as produced by the engine from chess.com) for each game. However, this is not included in the pgns. Is there any way I can programmatically collect this to correspond to the specific games? Or do I have to individually feed the pgns into stockfish and analyze in order to obtain the accuracy values of both players? Input needed please. Thanks
Hyper-Dragon Apr 29, 2022
Whats up my PEOPLE. I suck at web development. I know Java and SQLITE but nothing more. I have basic HTML knowledge which I think has little to nothing to do with the API. Anyways, first I have some basic questions to set my mind and then I will ask the specific one. 1- JSON is what is used to provide the text that you get when you type a certain "URL pattern"? 2- What exactly do you guys mean when you say endpoint, the result from the "query"? 3- I guess your programs execute the "URL patterns" provided by chess.com gather the response and format it to meet your needs, right?4- How do you format it and if I wanted to use Java, is there any library you guys know of that I could use to connect with the API? Finally, I was told by a chess.com god, aka developer that I can gather almost real time PGNs with the API. I went trough the whole document and I either suck at reading documentation or couldnt find how to do it. Can anyone enlighten me on how to?
I feel like I play better in early morning and performance wanes throughout the day, and I want to test the theory. I can find the date but not the start or end timestamps, either in page content or the API spec. Thanks!
Martin_Stahl Apr 20, 2022
Problem solved - the admins of a club taking part in a league I help run hadn't mentioned that their club's name had changed. I thought there was a problem with one of the endpoints.
ImperfectAge Apr 16, 2022