Public APIFree

TAKE.SKIN API

Access CS2 skin data programmatically. Browse skins, cases, collections, and get up to 30 days of price history — completely free, no API key required.

Overview

The Take.Skin API provides read-only access to CS2 skin market data. All endpoints are available without authentication. Simply send HTTP GET requests and receive JSON responses.

Base URL

https://take.skin/api/public/v1

Authentication

None required (IP-based rate limiting)

Response Format

JSON

CORS

Enabled — use from any domain

Rate Limits

Limits apply per IP address and are shared across all /api/public/v1 endpoints in one rolling hour. Each HTTP GET counts as one request, no matter how many items are in the JSON response. Market data is not real-time; cache responses and avoid tight polling. Every response includes rate-limit headers.

60

Requests per hour (all public endpoints)

30 days max

Price history range

100 max

Skins per page

Response Headers

X-RateLimit-LimitMax requests per window

X-RateLimit-RemainingRequests remaining in current window

X-RateLimit-ResetSeconds until the rate limit resets

GET/api/public/v1/skins

Retrieve a paginated list of all CS2 skins. Supports filtering by weapon type, rarity, and search keyword.

Parameters

ParameterTypeRequiredDescription
pageintegerNoPage index (0-based). Default: 0
limitintegerNoItems per page (1-100). Default: 50
searchstringNoSearch skins by name (case-insensitive)
categorystringNoFilter by weapon category: RIFLES, PISTOLS, SMGS, KNIVES, HEAVY, OTHER
weaponstringNoFilter by weapon slug, e.g. ak-47, karambit
raritystringNoFilter by rarity: Covert, Classified, Restricted, Mil-Spec Grade, etc.

Example Request

curl "https://take.skin/api/public/v1/skins?page=0&limit=5&category=RIFLES"

Example Response

Response
{
  "page": 0,
  "limit": 5,
  "total": 487,
  "totalPages": 98,
  "data": [
    {
      "name": "Asiimov",
      "slug": "ak-47-asiimov",
      "rarity": "Covert",
      "price": 34.20,
      "hasStatTrak": true,
      "hasSouvenir": false,
      "marketHashName": "AK-47 | Asiimov (Field-Tested)",
      "weapon": {
        "name": "AK-47",
        "slug": "ak-47",
        "category": "RIFLES"
      }
    }
  ]
}
GET/api/public/v1/skins/{marketHashName}/price-history

Get daily price history for a specific skin variant. The free tier provides up to 30 days of data. The marketHashName must be URL-encoded.

Parameters

ParameterTypeRequiredDescription
marketHashNamestringYesURL-encoded Steam market hash name, e.g. "AK-47 | Asiimov (Field-Tested)"
daysintegerNoNumber of days of history (1-30). Default: 7

Example Request

curl "https://take.skin/api/public/v1/skins/AK-47%20%7C%20Asiimov%20(Field-Tested)/price-history?days=30"

Example Response

Response
{
  "marketHashName": "AK-47 | Asiimov (Field-Tested)",
  "currency": "USD",
  "days": 30,
  "count": 30,
  "data": [
    { "date": "2026-03-18", "price": 32.50, "volume": 142 },
    { "date": "2026-03-19", "price": 33.10, "volume": 98 },
    { "date": "2026-03-20", "price": 34.20, "volume": 201 }
  ]
}
GET/api/public/v1/cases

Retrieve a list of all CS2 weapon cases with their current prices.

Example Request

curl "https://take.skin/api/public/v1/cases"

Example Response

Response
{
  "count": 42,
  "data": [
    {
      "name": "Kilowatt Case",
      "slug": "kilowatt-case",
      "price": 1.23,
      "marketHashName": "Kilowatt Case"
    }
  ]
}
GET/api/public/v1/collections

Retrieve a list of all CS2 skin collections.

Example Request

curl "https://take.skin/api/public/v1/collections"

Example Response

Response
{
  "count": 68,
  "data": [
    {
      "name": "The Alpha Collection",
      "slug": "the-alpha-collection"
    }
  ]
}

Error Codes

All error responses return a JSON object with error and message fields.

200

OK

Request succeeded.

400

Bad Request

Invalid parameters (e.g. days > 30, missing required fields).

429

Too Many Requests

Rate limit exceeded. Wait and retry. See Retry-After header.

500

Internal Server Error

Unexpected server error. Please try again later.

Error Response Example

Response
{
  "error": "Bad Request",
  "message": "Free API only provides up to 30 days of price history. You requested 90 days."
}

Questions or feedback? Reach us on Discord.