It takes a lot of effort to provide a viable API, and we're only getting started. We are very excited to help you build tools, services, and systems that help the Chess.com world-wide community of chess lovers enjoy and learn more about their favorite game. With your help, the Chess.com community can have all the niche specialty tools and daring massive data-crunchers they could hope for. Like any business, we need to know that our developers' time is making the biggest impact for our players. If you appreciate this API and would like us to continue active development and support, help us see the impact — tell us what you've built! This "Working Code" forum is all about things that actually exist and use the API for something useful — these things could be large and complex, or goofy little one-liners from the command line. Let us know how you are using it, and tell us about the players enjoying it. Share URLs or how-tos. Depending on the response, we may also decide to promote the most interesting and useful apps in news articles and app listings. If you have plans and either the API doesn't provide the data you need or (like all of us) you haven't found the time yet, post a description of your goal in the What Will You Build forum.
Avatar of lequanAlex
lequanAlex 3 days ago
We've got plans for adding more clubs, tournaments, and team match data endpoints, and by popular demand we will figure out how to attach PGNs to games for you to download. Then we'll start talking about how to open up the interactive API. Help us plan and prioritize everything — tell us what you plan to build! Then we can figure out the data and tools that you need and how to publish it. So what is it? A local database of your games? New analysis tools for everyone? A "Fantasy Chess League" for your friends? A super top-secret app guaranteed to take chess to the next level? Let us know as much or as little of the idea as you like, but help us understand what data you need to build it right!   (Remember to read the README so you can understand any restrictions and how these might change over time.)
Avatar of Theodoregore5
Theodoregore5 Nov 11, 2025
In this forum topic, Chess.com Staff will share a weekly update on bugfixes, new API endpoints, documentation updates, and other changes. Other posts or discussion may be deleted, to keep this topic relevant. You are invited to start from the last post to see the most recent changes.
Avatar of M-DinhHoangViet
M-DinhHoangViet Sep 15, 2025
As of mid-December 2024 the Public API is in a maintenance / bug-fix only mode. The club description has been updated to reflect the change in status. Included below is a copy of the statement from the description. Note that Chess.com's Public API is no longer being actively updated, and there are always engineering projects underway that may occasionally impact functionality of the Public API. While you are free to build projects on the Public API, you may encounter bugs or instability - to report a bug, please post in the club forum.
Avatar of Martin_Stahl
Martin_Stahl Jan 10, 2025
If you are building something interesting and driving new members to Chess.com, join our Affiliate Program! 
Avatar of Slogo44211
Slogo44211 Jan 7, 2025
There are some backend updates occuring that feed the following API endpoints. /pub/match/{id}  /pub/match/live/{id}  /pub/player/{username}/games/archives  /pub/player/{username}/games/{yyyy}/{mm}  /pub/player/{username}/matches /pub/tournament/{url-ID}/{round}/{group} It's not expected that there will be any issues but if anything is noticed, please create a topic along with the endpoint(s) being called
Avatar of Martin_Stahl
Martin_Stahl Nov 10, 2024
Latest update: 2017-07-31 by @bcurtis   Chess.com is making the chess game and community data available to outside programmers through two APIs: The "Published-Data API," which re-publishes as JSON most of the public data available on the website, and is easy to use with little programming skill and so if you have a simple feature to build or are just dabbling in programming this is where to start. The "PubAPI" has endpoints coming online now; you can START HERE with the general documentation and list of available endpoints. The "Interactive API," which is the same connection our official mobile apps use to obtain data and send commands, and as such it requires a developer application process and more complex handling of security and data handling. Information will be posted soon about how to participate in the release over the coming year. This README will be edited from time to time to reflect the current state of the rollout. When contributing comments below about how the README should be improved, consider that previous comments may refer to older versions of the README. Visit the CHANGELOG forum to review the latest updates. Bug reports, feature requests, and commentary posted to these forums will be read by the developers building these tools. We may not respond immediately or at all, but every post will be read.     These APIs should be considered BETA products. These APIs are currently under development and many many changes will be released over the next six months. We will actively incorporate your comments left here in the devclub forum, but this means that API endpoints not clearly marked as "stable" should not be considered for critical production applications. We may temporarily suspend the service without notice for maintenance, security, or other reasons. With your active participation in these forums, you can help us avoid breakages while improving the access for everyone. During this release period, we will be determining priorities and value based on feedback from the community. Participants should not expect a precise or reliable development roadmap while these APIs are in beta. All data are owned by Chess.com. This data retention statement is intended to provide guidance to developers as we gather their feedback and create a more formal agreement. The final published terms may change your rights, and by accessing the API you agree to apply those terms retroactively to data you may have previously downloaded. If you are not comfortable using an API and data which may have the terms of use change possibly frequently and without notice, then we advise that you postpone your development until after the beta period is complete. Please continue to participate in the discussion to help us craft the best policy for everyone.Under no circumstances may data obtained from the Chess.com website or API be used to create or augment a competing service. If you are concerned that your service may be deemed "competing," ask us. Store only the data you need to provide your service and only for as long as needed. Respect the Chess.com community by not displaying or processing outdated and misleading data. Your rights to use, process, or share the data may change from time to time, so that we may protect our users' privacy and Chess.com's ability to provide an enjoyable service.
Avatar of 1Veni2Vidi3Vici
1Veni2Vidi3Vici Oct 7, 2024
Hi, I would like to report an in consistency regarding If-Modified-Since / Last-Modified between the API documentation and the actual behaviour. The API documentation says: "Each response has "ETag" and "Last-Modified" headers. If your client supplies the proper header in the request to prove that the data have not changed since your previous request ("If-None-Match" and "If-Modified-Since", respectively), then you will receive a 304 Not Modified response code, telling you that it is safe and correct to use your cached version." ETag / If-None-Match works exactly as documented. If-Modified-Since / Last-Modified does not. Three distinct observations: 1. The origin ignores If-Modified-Since regardless of value Probes below omit If-None-Match so only the date header is evaluated (RFC 7232 §6 gives ETag precedence when both are present): # 1. Verbatim value from a prior Last-Modified response. $ curl -s -o /dev/null -w '%{http_code}\n' \ -H 'If-Modified-Since: Friday, 17-Apr-2026 11:05:26 GMT+0000' \ https://api.chess.com/pub/player/snowycat 200 # 2. Same instant re-emitted in RFC 7231 IMF-fixdate form. $ curl -s -o /dev/null -w '%{http_code}\n' \ -H 'If-Modified-Since: Fri, 17 Apr 2026 11:05:26 GMT' \ https://api.chess.com/pub/player/snowycat 200 # 3. A date 30 days in the FUTURE. Per RFC 7232 §3.3 the server MUST # return 304 here (the resource cannot have been modified since a # future instant). $ curl -s -o /dev/null -w '%{http_code}\n' \ -H 'If-Modified-Since: Sun, 17 May 2026 11:05:26 GMT' \ https://api.chess.com/pub/player/snowycat 200 Same shape on /pub/player/{u}, /pub/player/{u}/stats, /pub/player/{u}/games/archives, and /pub/match/{id}. For comparison, If-None-Match with the same resource returns 304 with a matching ETag and 200 with a bogus one — so the conditional-GET path is alive, it just doesn't consult If-Modified-Since. 2. The Last-Modified value doesn't track content modification snowycat is a closed account so the resource's content is static. The ETag W/"09ef210fc806b620027024c8ed241933" is byte-identical across multiple fetches separated by days. Yet the Last-Modified value reports a time from earlier this morning. Same shape across a range of historic matches. Fetched a day apart, these ETags are all byte-identical: /pub/match/85 W/"f2392d655d3950ca92ce842dd730a453" last-modified: Thursday, 16-Apr-2026 17:07:4x GMT+0000 /pub/match/242 W/"8cf334e08ce33dd8f6c7b55d289561ad" last-modified: Thursday, 16-Apr-2026 17:07:4x GMT+0000 /pub/match/1346 W/"8bd97ff4ab6a03f7da2ee0b8683229bd" last-modified: Thursday, 16-Apr-2026 17:08:1x GMT+0000 /pub/match/3055 W/"e46352cbc0007bc81911e6d1b213b287" last-modified: Thursday, 16-Apr-2026 17:16:3x GMT+0000 /pub/match/11495 W/"d88fe2ad3ef6d31644d16b712abeb551" last-modified: Friday, 10-Apr-2026 13:18:19 GMT+0000 /pub/match/12 W/"4e2c65fc5eee4b2ecfbd66c2bc85cd73" last-modified: Thursday, 16-Apr-2026 23:45:4x GMT+0000 These matches are all long-finished (match 12 is from Chess.com's earliest days). The ETag confirms the bodies haven't changed — yet Last-Modified values are scattered across the past week, not years ago. Whatever this value is tracking (edge-cache refresh time, perhaps), it isn't origin-resource modification. The upshot: a client that honestly echoed the received timestamp back in If-Modified-Since would get 200s forever, because the server's idea of the resource's "modification time" on the next request is going to be later than any value it previously emitted. 3. The Last-Modified value isn't a valid HTTP-date A typical response: GET https://api.chess.com/pub/player/snowycat etag: W/"09ef210fc806b620027024c8ed241933" last-modified: Friday, 17-Apr-2026 11:05:26 GMT+0000 cache-control: public, max-age=5 RFC 7231 §7.1.1.1 defines exactly three legal HTTP-date forms: Form Example IMF-fixdate (preferred) Fri, 17 Apr 2026 11:05:26 GMT RFC 850 (obsolete) Friday, 17-Apr-26 11:05:26 GMT asctime Fri Apr 17 11:05:26 2026 The value Friday, 17-Apr-2026 11:05:26 GMT+0000 matches none: Full weekday name rules out IMF-fixdate and asctime. 4-digit year in hyphen-separated form rules out RFC 850, which mandates a 2-digit year. GMT+0000 isn't a legal HTTP-date timezone — RFC 7231 requires the literal string GMT. Strict RFC 7231 parsers reject it outright (for example Java's DateTimeFormatter.RFC_1123_DATE_TIME throws DateTimeParseException, and typed-header wrappers built on it silently return None). More lenient parsers often parse successfully but drop the timezone — Python's email.utils.parsedate_to_datetime returns a naive datetime for this input versus a UTC-aware datetime for correctly-formed IMF-fixdate, a subtle footgun for code that does datetime arithmetic on the result.
Avatar of Neshaya-Mihelee
Neshaya-Mihelee 7 hrs ago
Hello everyone,I started making my first ever project with chess.com's public API and for one of my project's features, I have to request the API for every game a user has played, Im using python and even after trying to optimize my code and multi-threading. Max efficiency I get it 90 seconds for a profile with 800 gamesHow do you guys solve this problem and make your websites or projects so fast with fetching all user data in under 10 to 15 seconds, is it possible for my project?I'd love to get some advice from you guys, Thank you
Avatar of Nitya_XGAMER
Nitya_XGAMER 7 hrs ago
Hey everyone  I’ve been working on a tool that connects directly with your Chess.com account and helps you analyze your games in a more practical way. Instead of just going through engine lines, the idea is to turn your own games into interactive chess puzzles, so you actively think through positions you actually played. Once you connect your account, you can: Identify exactly where your game started going wrong See better moves you could have played in that position Replay missed opportunities as puzzles Spot opponent blunders you didn’t capitalize on The goal is simple:👉 move from passive analysis → active learning I built this because I struggled with turning analysis into real improvement, and this approach made a big difference for me. Would love feedback from both developers and players here Happy to share the link PS If you are intrested plaese reach out to me I am looking for developers with whoom I can collaborate.
the site is chessitupi dont think chess.com will let me link it but if you search "chess it up", it will show up.
Avatar of TheSaadsterr
TheSaadsterr 2 days ago
I’m building ChessHunter.com, a tool for practical opponent prep. You pick: Your profile + Your opponent White or Black Then it analyzes the matchup and surfaces: your repertoire vs their weak spots recurring patterns/mistakes from their games actionable prep ideas (what to play / what to avoid) Games from Chess.com, Lichess, and TWIC + Lichess broadcast. I'm looking for blunt feedback: Is the output actually useful for prep, or just "interesting stats"? What insights would you want to see that aren’t there? Any red flags? What do you think about the app? Link:
Avatar of TheHunterOneOne
TheHunterOneOne 4 days ago
  API Endpoint: https://api.chess.com/pub/player/douloschristou/games/2026/04               Expected: JSON array of finished games for April 2026                                                        Actual: 404 with internal error response:                                        {"code":0,"message":"An internal error has occurred..."}                                                        Details:                                                                         - The archives list endpoint (/pub/player/douloschristou/games/archives)   includes 2026/04 in its response                                                 - Fetching that URL returns the error above                                 - All other months work fine (e.g., /games/2026/03 returns 13 games as           expected)                                                                        - Other players' April archives work (e.g., Hikaru's /games/2026/04 returns      games normally)                                                                  - I have completed games in April — for example                                  https://www.chess.com/game/live/167041242198                                - The issue has persisted for at least 9 days (since the start of April)         - Tested with multiple User-Agent strings, same result                                                                                   
Avatar of doulosChristou
doulosChristou 7 days ago
Recently I created a club called Chess Population it is a very working club, but when I try to use api to get the members and the member statues (bullet, blitz, rapid, and daliy chess) it is always giving me 0 I asked AI it told me it is probably chess.com is blocking ur request and it told me to open this link I opened it and it is giving me this error.{ "code":403,"message":"An internal error has occurred. Please contact Chess.com Developer's Forum for further help https://www.chess.com/club/chess-com-developer-community ."} AI told me that I need to use VPN to hide my IP address but I didn't find it working bc I am calling it from a python script, and these aren't related together and even I can't use VPN, and also he told me that it is blocked bc I live in the UAE, so if our developer helps me to find a way to do it without 403 error it will be my wish
Avatar of Xv-Haneef-vX
Xv-Haneef-vX 7 days ago
"I am looking for a developer to host a dynamic image link for my club, The Nexus Void. I want a progress bar that automatically updates its percentage based on our live member count!! If you can, please message me personally!! I will reward the person to!!
Avatar of Christopher_Parsons
Christopher_Parsons 7 days ago
I feel like chess.com needs improvements on its UI/UX clutter, engine analysis reliability, and reducing cheaters. Users often criticize the premium membership cost, repetitive puzzles, and the game review feature.  I still like chess.com but I feel like it needs some improvements server lag/disconnections are mentioned sometimes like in this forum/blog: https://www.chess.com/blog/hau_mau_khau/chess-com-is-the-worst-website-for-playing-chess https://www.chess.com/forum/view/site-feedback/chess-com-is-a-horrible-app-website-111303138.
Avatar of Lisa-Canadian
Lisa-Canadian 11 days ago
I want to be able to search active games on chess.com via PGN or FEN to see if someone is using my tool to cheat. I would also like to have an endpoint to report likely cheating. I realize that this may be computationally difficult, but I would love to be able to display a message "You entered the PGN for the position of an active game on chess.com. Please wait until the game finishes and try again." For more context, I am building an app (chrome extension) for chess game analysis, and I am worried about users trying to use it to cheat for games that are in process. I have some ways to detect if a game is in progress in the extension's browser, but I can imagine several ways that users could work around this.
Avatar of Html-Css-Js
Html-Css-Js 11 days ago
So the Chess.com API needs some changes. These changes are about adding information from games that are happening now making the analysis of games better which includes things like when the game starts and ends. They also need to update the instructions for using the Chess.com API and make it so people can use it often every hour. The Chess.com API needs these changes because there are some limits, on how people can use the REST API for the Chess.com API. Thank you!
Avatar of Martin_Stahl
Martin_Stahl 11 days ago
I was potentially interested in making an Electron app version of Chess.com, but wanted to ask if this would get me in trouble before doing it. Basically, I really want to have a top-notch chess experience on my Steam Deck, so I wanted to rearrange the UI a bit to work better on the small wide screen, and add really good support for gamepad controls (eg adding a cursor you control with the thumbstick to move pieces and such). Eventually it might also be nice to have desktop notifications when it's your turn in a daily game. In general, the goal would be to have it feel as seamless to play Chess.com on a handheld PC as it does to play on any other device. I would absolutely like to stay completely within the fair play rules of course. From reading the fair play policy, I don't believe my app would be breaking any rules. But I just wanted to ask around a bit first, as I really don't want to get myself or anyone else banned. Are there any other rules/policies I should be aware of? Or any precedent for what kinds of apps/extensions have/haven't been permitted in the past? Any advice would be greatly appreciated!
Avatar of ninjaswat
ninjaswat 11 days ago
Admins