CS2 data in a spreadsheet.
Two Apps Script custom functions put the VRS table and recent results in any cell. No add-on, no export: type =CS2_VRS(30) and the table fills in.
- Custom functions
- No add-on needed
- 500 free requests / month
{ "data": [ { "rank": 1, "teamName": "Spirit", "region": "Europe" }, { "rank": 2, "teamName": "Legacy", "region": "South America" } ... ]}Seamless Integration with our MCP Server
Give Claude, Cursor and ChatGPT the CS2 data. One command writes the MCP config; agents call live scoreboard, team map stat, opening duel and transfer tools instead of inventing match IDs, and your key stays on your machine.
MCPInstall the Cito MCP serverWhat analysts keep in Sheets
Tables that refresh when you reopen the sheet.
Rankings
The VRS table with points and change.
Results
Recent results with event and score.
Player lines
A player's recent maps, row by row.
Schedules
Upcoming matches for a planning sheet.
Skin prices
Track a watchlist of skins by price.
Refresh on open
Custom functions recalculate with the sheet.
Rankings and results functions
// Extensions > Apps Script. Save your key under Project Settings > Script properties
// as CITO_API_KEY, then type =CS2_VRS(30) in a cell.
function CS2_VRS(limit) {
const key = PropertiesService.getScriptProperties().getProperty("CITO_API_KEY");
const res = UrlFetchApp.fetch(
"https://api.citoapi.com/api/v1/cs2/rankings/vrs?limit=" + (limit || 30),
{ headers: { "x-api-key": key } }
);
const rows = JSON.parse(res.getContentText()).data;
return [["Rank", "Team", "Points", "Change"]].concat(
rows.map(function (r) { return [r.rank, r.teamName, r.points, r.change]; })
);
}
function CS2_RESULTS(limit) {
const key = PropertiesService.getScriptProperties().getProperty("CITO_API_KEY");
const res = UrlFetchApp.fetch(
"https://api.citoapi.com/api/v1/cs2/matches/recent?limit=" + (limit || 20),
{ headers: { "x-api-key": key } }
);
const rows = JSON.parse(res.getContentText()).data;
return [["Event", "Team 1", "Score", "Team 2"]].concat(
rows.map(function (m) { return [m.eventName, m.team1Name, m.team1Score + "-" + m.team2Score, m.team2Name]; })
);
}Endpoints you can ship with
Any list endpoint can become a sheet function.
Rankings
The world team ranking and the Valve Regional Standings, with points and movement, plus one table per region.
- GET
/api/v1/cs2/rankings/worldThe latest world team ranking.
- GET
/api/v1/cs2/rankings/vrsThe latest Valve Regional Standings (VRS).
- GET
/api/v1/cs2/rankings/region/{region}One region, with each team's world and regional rank.
- GET
/api/v1/cs2/rankingsOne row per team, with points and change since the previous ranking.
FAQs
Apps Script, keys and refresh
Can't find what you're looking for? Contact our customer support team
Tables to pull in
- CS2 rankings APIWorld ranking and Valve Regional Standings with movement.
- CS2 match results APIFinal series scores, map scores and box scores.
- CS2 skin prices APISkin prices per marketplace, daily history and movers.
- CS2 player stats APIRating, ADR, KAST and K/D per map, career and form.
- CS2 schedule APIUpcoming matches, today's slate and the tournament calendar.
- CS2 API in PythonLive scores, results and player stats with requests.