BYTETOOLS

CS:GO / CS2 Items API

Free Counter-Strike 2 and CS:GO item API with no key: every skin, crate, sticker, agent, charm and collection with rarity colours, market hash names and Steam CDN images.

No API key requiredCORS enabledHTTPSFree tier

Endpoint tested and returned HTTP 200 on 2026-08-21

What is the CS:GO / CS2 Items API?

ByMykel's CS:GO API is a free, key-free dataset of every Counter-Strike 2 and CS:GO in-game item — skins, crates, stickers, agents, patches, graffiti, music kits and charms — each with its rarity, collection, market hash name and Steam CDN image URL, published as static JSON in more than a dozen languages.

This is a dataset rather than a query service, and understanding that shapes how you use it. There is no search parameter and no pagination: you fetch a whole category file and filter in your own code. That is a deliberate trade — the files are generated from the game's own item schema, served straight from a CDN with no server to fall over, and a client-side filter over a few thousand entries is faster than a network round trip anyway. Do fetch once and cache, though; `skins.json` is several megabytes.

The base URL is the practical catch. The project's GitHub Pages host currently redirects to a custom domain that no longer serves the files, so the working base is `raw.githubusercontent.com` — which the repository's own README documents as the canonical path. It is served with `Content-Type: text/plain`, so any HTTP client that decides how to parse a body from the content type will hand you a string rather than an object. Parse explicitly. The `market_hash_name` field is the one to hold onto: it is the exact key Steam Market pricing endpoints expect.

Quick facts

Base URL
https://raw.githubusercontent.com/ByMykel/CSGO-API/main/public/api
Authentication
No key. Files are static JSON served from GitHub's raw CDN, so the usual GitHub availability and caching rules apply.
Rate limit
No API-level limit. Raw GitHub applies its own generous caching and abuse thresholds; fetch once per deploy rather than per page view.
Pricing
Free and open source.
CORS
Enabled — callable directly from browser JavaScript
Official docs
Read the docs

How to use the CS:GO / CS2 Items API

Every request below was executed against the live API on 2026-08-21, and the response shown is the real body it returned — not an illustration.

1. Fetch every CS2 charm (keychain) in English

GET https://raw.githubusercontent.com/ByMykel/CSGO-API/main/public/api/en/keychains.json

curl
curl 'https://raw.githubusercontent.com/ByMykel/CSGO-API/main/public/api/en/keychains.json'
JavaScript (fetch)
const res = await fetch("https://raw.githubusercontent.com/ByMykel/CSGO-API/main/public/api/en/keychains.json");
if (!res.ok) throw new Error(`Request failed: ${res.status}`);
const data = await res.json();
console.log(data);
Python (requests)
import requests

res = requests.get("https://raw.githubusercontent.com/ByMykel/CSGO-API/main/public/api/en/keychains.json", timeout=20)
res.raise_for_status()
print(res.json())
Response — HTTP 200 (truncated)
[
  {
    "id": "keychain-1",
    "name": "Charm | Lil' Ava",
    "description": "This charm can be attached to any weapon you own. Each attached charm can be detached by using a Charm Detachment. Detached charms will be returned to your inventory.",
    "def_index": "1",
    "rarity": {
      "id": "rarity_rare",
      "name": "High Grade",
      "color": "#4b69ff"
    },
    "collections": [
      {
        "id": "collection-set-kc-missinglink",
        "name": "Missing Link Charm Collection",
        "image": "https://raw.githubusercontent.com/ByMykel/counter-strike-image-tracker/main/static/panorama/images/econ/set_icons/set_kc_missinglink_png.png"
      }
    ],
    "market_hash_name": "Charm | Lil' Ava",
    "image": "https://community.akamai.steamstatic.com/economy/image/i0CoZ81Ui0m-9KwlBY1L_18myuGuq1wfhWSaZgMttyVfPaERSR0Wqmu7LAocGI6zwki4Uf_a0IWsPGiE7Fhy-I764RbsQiL8l4Xz9Cxc4_ugY5tsNvHdCDWVkOsu5uQ4FnC1lkx-sWSHm92ucHrBPVMjWJN5QuQKsxO_xIWyM_SiuVKGOzqoDg",
    "original": {
      "loc_name": "#keychain_kc_missinglink_ava",
      "image_inventory": "econ/keychains/missinglink/kc_missinglink_ava"
    }
  },
  {
    "id": "keychain-2",
    "name": "Charm | That's Bananas",
    "description": "This charm can be attached to any weapon you own. Each attached charm can be detached by using a Charm Detachment. Detached charms will be returned to your inventory.",
    "def_index": "2",
    "rarity": {
      "id": "rarity_mythical",
      "name": "Remarkable",
      "color": "#8847ff"
    },
    "collections": [
      {
        "id": "collection-set-kc-missinglink",
        "name"

Parameters

ParameterTypeRequiredDescription
langpath segmentRequiredLanguage directory: `en`, `fr`, `de`, `es`, `pt-BR`, `ru`, `zh-CN`, `ja` and more. en
filepath segmentRequiredCategory file: `skins.json`, `skins_not_grouped.json`, `crates.json`, `stickers.json`, `agents.json`, `patches.json`, `graffiti.json`, `music_kits.json`, `collections.json`, `keychains.json`, `keys.json`, `collectibles.json`, `base_weapons.json`, `tools.json`, `highlights.json`, `sticker_slabs.json` or `all.json`. keychains.json

Response fields

(root)array
A bare array of item objects. `all.json` is the exception — it is an object keyed by item id.
idstring
Prefixed identifier such as `keychain-1` or `skin-1`. The prefix tells you the category, which matters when merging files.
namestring
Display name in the requested language, in Valve's `Category | Item` format such as `Charm | Lil' Ava`.
def_indexstring
The game's internal definition index — a string here even though it is numerically a small integer.
rarityobject
`id`, `name` and a `color` hex value taken from the game itself, so your UI can match in-game rarity colours exactly.
collectionsarray
Collections the item belongs to, each with an `id`, `name` and set-icon `image`. Empty for items outside a collection.
market_hash_namestring
The exact string Steam Market uses as a key. This is the field to store if you plan to look up prices.
imagestring
Steam community CDN URL for the item image. Long-lived but tied to Valve's CDN, so proxy or cache it if uptime matters.

What you can build with the CS:GO / CS2 Items API

  • Build a CS2 skin browser with correct in-game rarity colours
  • Map inventory items to Steam Market names for price lookups
  • Generate a searchable local index of every crate and its contents
  • Localise an item database without maintaining your own translations
  • Diff two releases of the file to detect newly added items after a game update

Common errors and how to fix them

404 on bymykel.github.io

The Pages host redirects to a custom domain that no longer serves the API files.

Fix: Use the `raw.githubusercontent.com` base documented in the repository README instead.

A string instead of an object

The response is served as `text/plain`, so content-type-sniffing clients skip JSON parsing.

Fix: Parse the body explicitly rather than relying on your HTTP library's automatic decoding.

Very large responses

`skins.json` and `all.json` are multi-megabyte dumps.

Fix: Fetch the narrowest category file you need, and pull it at build time rather than per request.

CS:GO / CS2 Items API — frequently asked questions

Is there a free CS2 skins API with no key?

Yes. ByMykel's CSGO-API publishes every in-game item as static JSON with no key, no account and no rate limit beyond GitHub's own. It covers skins, crates, stickers, agents, charms, graffiti and music kits.

Why does the GitHub Pages URL not work?

The Pages site redirects to a custom domain that no longer serves the API directory, so those URLs 404. The repository README documents `raw.githubusercontent.com/ByMykel/CSGO-API/main/public/api/...` as the path to use, and that one works.

Does the CS:GO API include item prices?

No — it is item metadata only. What it does give you is `market_hash_name`, the exact key Steam Market pricing endpoints expect, so pairing it with a pricing source needs no fuzzy name matching.

Which languages are available?

More than a dozen, each in its own path segment: English, French, German, Spanish, Brazilian Portuguese, Russian, Simplified Chinese, Japanese and others. Only the `name` and `description` fields change; ids and market hash names stay constant.

Tools that pair with this API

CS:GO / CS2 Items API is an independent third-party service and is not affiliated with ByteTools or ByteVancer. Details on this page were verified on 2026-08-21; always check the official documentation before relying on this API in production, as terms and limits can change.