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 jeremyyang6-7
jeremyyang6-7 Feb 18, 2026
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 devs! I created a web app called 'Pawncard.' It generates a profile card from your chesscom account, as well as a highlight feed of some of your recent games in a scrollable social-media-like feed!https://pawncard.up.railway.app/ All you need to do is enter your username, no login needed! Just uses the PubAPI. *currently gets 3 most recent wins from the current month. meaning only May will be counted right now, with June being appended to May's data next month! Please try it out and let me know what you think! Here's an example: Profile card: Here's the feed:
Avatar of peach_02
peach_02 7 hrs ago
Three matches returning "code":0,"message":"An internal error has occurred." All valid matches WL2026 R2: Team USA vs Team Germany 10/05/2026 09:33:31         404           https://api.chess.com/pub/match/1906425 CC26 D1 R3 London vs Royal County of Berkshire10/05/2026 09:53:28         404           https://api.chess.com/pub/match/1901349 CC26 D2 R6: Hertfordshire County Chess vs Team Cambridgeshire10/05/2026 09:54:22         404           https://api.chess.com/pub/match/1937757
Avatar of Tricky_Dicky
Tricky_Dicky 13 hrs ago
Hi there!I’d like to suggest a small UX improvement for the Puzzles section.From time to time, I want to switch between rated and unrated puzzle mode. Right now, this requires going into the settings, finding the correct tab, finding the correct section, changing the option, and then going back to puzzles.Chess.com settings are quite extensive, which is understandable, but for this specific action it feels unnecessarily time-consuming. Because of that, I often just give up instead of changing the mode.It would be much more convenient if there was a simple toggle/button directly on the puzzle screen, for example next to the sound icon.This would be especially useful for non-premium users, because when you only have a limited number of puzzles per day, it does not feel worth going through the full settings flow just to change the mode for a few puzzles.Thanks!
Avatar of Name1essOne
Name1essOne 4 days ago
So I was finding the API of a club and this error popped up. What do I do?{"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 ."}
Avatar of Stellar_Endgame
Stellar_Endgame 5 days ago
I’m currently stuck at around 1800
Avatar of Martin_Stahl
Martin_Stahl 6 days ago
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 Wallace_Wang
Wallace_Wang 6 days ago
Hey Everyone, I am working on my first project with its main feature being the chess's country statistics, your wins/losses against each country which is a paid feature of chess insightsI just made a working model of it and wanted to share with you guys and amopen to all feedbacks and suggestionswebsite: chessscope-frontend. vercel. app UI is all AI for now, and the "time played" is pretty inaccurate too preferred to check with pc, seems better that way, if you guys have any other ideas or advice for me, I'm all ears
Avatar of Naughtious-maximus
Naughtious-maximus 9 days ago
Hey I have made a chess engine It is Like stock fish and it is made of C++ and a bit of Python I have put it online on my Github repository My username is Coderbhai777 Please start that and Please test it out I want some reviews of it because my father was not able to defeat it as he playing better than me You please try to play against it and tell me if you won or Lost and review it from one to 10 that's it thank you.
Avatar of Shivansh_Sagar_Pancholi
Shivansh_Sagar_Pancholi 16 days 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.
Avatar of PhantomMateXX
PhantomMateXX 22 days ago
Examples: https://www.chess.com/club/matches/1885973 https://api.chess.com/pub/match/1885973 https://www.chess.com/club/matches/1788518 https://api.chess.com/pub/match/1788518
Avatar of stephen_33
stephen_33 22 days ago
 Hello Chess.com Team, I am a C/C++ With 2 months experience. I need some Clarification on What language you all are using. It doesn’t seem to be C/C++. I am okay with Java For Backend Support But it Isn’t a language I am familiar with. It seems to be something like Python Or JS (Javascript). Please Respond On what language Y’all are using And using that Info I’ll try my level Best on Trying to help with Certain Issues. Awaiting Your response, please DM Me. Thank you IRL_Pwned😁
Avatar of IRL_Pwned
IRL_Pwned 23 days ago
Bunnyfied Chess You only get 4 mistakes total. Standard puzzles. No retries. Most players don’t cross 10. Curious how far you go in Blunder Limit: 4 (I’ve been experimenting with this mode, would love feedback)
Avatar of Your_Worst_Knightmares
Your_Worst_Knightmares 28 days ago
Admins