Speedrun.com

hosts video game speedrun leaderboards, as well as forums and other resources related to speedrunning. It is the main repository of speedrunning records for most games that do not have their own dedicated leaderboard site.
== Acquisition by Elo ==
On 2020-10-13, site creator announced that the site had been acquired by , a data analytics and advertising company.
* by Pac
* by Alicen Lewis
* 
Some users have expressed concern that the change in ownership may result in features disappearing or requiring payment.
* 
 oh fuck SRC didn't just get obtained by some random org, they got obtained by the guys behind dotabuff, aka "steadily locking features behind a paywall until the site is entirely barebones" the company
 dotabuff was the go to source for match history/competitive stuff in dota for years, and then they slowly started shoving features behind the paywall until some competitors got in (opendota and stratz) and the only reason to use it is that you dont know the others exist
* 
 I actually have a question since I just noticed it. On your website you sell(?) access to an API for all of your websites, but SRC's API is already free and open source-ish. Is this due to change, or are you just selling the easy to access all in one API? A lot of community resources rely on this API. I'm not familiar enough with your other sites to find a definite answer to if those also have individual free APIs or not.
== Archiving tools ==
https://github.com/xwmtp/src-backup
Simple script to download a backup of all raw data of one or more games on Speedrun.com. The downloaded data consists of raw json files with all runs and game information needed to set up a leaderboard.
The script does no processing whatsoever, but with a little programming knowledge you can easily convert the files to a database format. This script just provides a quick way to make sure you have all the leaderboard data of your speedgame at hand.
You can write WARCs with Warcprox using Requests' supported environment variables:
HTTP_PROXY="http://localhost:8000"
HTTPS_PROXY="http://localhost:8000" note the httpS!
CURL_CA_BUNDLE=""turns off certificate verification; be careful if you use this! you can also override requests' CA bundle, which is more secure
== API ==
Speedrun.com has an for querying information about users, games, runs, . Most of the API is read-only and anonymous, and does not require an account to access. Access is rate-limited to . On 2020-10-16, a mod for the site said that the API would remain unchanged .
=== Examples ===
; https://www.speedrun.com/api/v1/users
: Get a list of all users (paginated).
; https://www.speedrun.com/api/v1/users/wzx7q875
: Get information about one user.
; https://www.speedrun.com/api/v1/games
: Get a list of all games.
; https://www.speedrun.com/api/v1/leaderboards/o1y9wo6q/category/7dgrrxk4
: Get the leaderboard for SM64 70 stars.
=== Archiving a game ===
Quick and dirty archival of a single game using Wget and jq.
Warning: Does not handle pagination; i.e., only saves up to the first 20 results of each API request.
Do a search for the game name (here, crystal caves) to find its id.
wget -O - 'https://www.speedrun.com/api/v1/games?name=crystal caves' | jq '.data[]|{id:.id,name:.names.international,weblink:.weblink}'
The output will be something like the following.
In this example, we will use the id 268m87dp.
{
 "id": "k6qgzxdg",
 "name": "Crystal Caves 2: Slugging It Out",
 "weblink": "https://www.speedrun.com/crystalcaves2"
}
{
 "id": "268m87dp",
 "name": "Crystal Caves 1: Troubles with Twibbles",
 "weblink": "https://www.speedrun.com/crystalcaves1"
}
{
 "id": "j1nxzldp",
 "name": "Crystal Caves 3: Mylo Versus the Supernova",
 "weblink": "https://www.speedrun.com/crystalcaves3"
}
Download the main JSON document for the game.
wget --no-clobber --force-directories --no-host-directories https://www.speedrun.com/api/v1/games/268m87dp
Rename the main JSON document. This is because the game id is used by the API as if it were both a directory name and a file name.
The next Wget command would overwrite this JSON file if it were not renamed.
mv api/v1/games/268m87dp api/v1/games/268m87dp.json
Download the JSON documents and graphics cross-referenced by the game:
jq -r '.data|((.assets[]|values),(.links[]|select(.rel!="self"))).uri' api/v1/games/268m87dp.json | wget --wait=1 --no-clobber --force-directories --no-host-directories -i -
Download the JSON documents for every run and player:
jq -r '.data[]|(@uri "https://www.speedrun.com/api/v1/runs/\(.id)",.players[].uri)' 'api/v1/runs?game=268m87dp' | sort | uniq | wget --wait=1 --no-clobber --force-directories --no-host-directories -i -
Download player avatar graphics:
jq -r '@uri "https://www.speedrun.com/themes/user/\(.data.names.international)/image.png"' api/v1/users/* | sort | uniq | wget --wait=1 --no-clobber --force-directories --no-host-directories -i -