Skinory (submitted as g2push) Inventory API

The Inventory API from Skinory (submitted as g2push) — 1 operation(s) for inventory.

Operations 1

GET /api/v1/inventory Appraise a public CS2 Steam inventory #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/skinory:skinory-inventory-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

skinory-inventory-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Skinory Inventory API
  version: 1.0.0
  summary: Read-only CS2 skin prices, Steam inventory appraisal, pro teams and players
  description: Public read-only API of skinory.io. Prices are the best buy-now offer aggregated across market feeds (Skinport, Market.CSGO, DMarket, CSFloat, Waxpeer, White.Market, CSBoard) and the Steam Community Market, in USD, refreshed roughly hourly. The site does not sell items. Item pages live at the url fields of every response.
  termsOfService: https://skinory.io/privacy
  contact:
    name: Skinory
    url: https://skinory.io/ru/about
  license:
    name: CC BY-SA 4.0 for the teams and players data, attribution with a link to Skinory is required
    url: https://creativecommons.org/licenses/by-sa/4.0/
servers:
- url: https://skinory.io
security:
- {}
- bearerKey: []
- headerKey: []
tags:
- name: Inventory
paths:
  /api/v1/inventory:
    get:
      operationId: appraiseInventory
      summary: Appraise a public CS2 Steam inventory
      description: Resolves a Steam profile and returns the total value of its CS2 inventory with the most expensive items. The inventory must be public in Steam privacy settings. A fresh appraisal can take a few seconds; on 503 retry after the Retry-After delay. Owners can hide their inventory on the site, then 403 hidden is returned.
      parameters:
      - name: steam
        in: query
        required: true
        description: Steam profile URL (steamcommunity.com/id/<name> or /profiles/<id>), a 17-digit SteamID64 or a custom URL name
        example: https://steamcommunity.com/id/gabelogannewell
        schema:
          type: string
          maxLength: 200
      - name: lang
        in: query
        required: false
        description: Language of the page links in url fields (the site locale prefix, e.g. /en/items/…). Defaults to the Accept-Language header, then English. Unknown values are ignored.
        example: en
        schema:
          type: string
          enum:
          - ru
          - pl
          - en
          - de
          - nl
          - da
          - es
          - pt
          - fr
          - tr
          - mn
          - zh
          - ja
          - ko
          - vi
          - id
          - ms
          - tl
          - hi
          - ar
          - fa
          - he
      responses:
        '200':
          description: Appraisal
          content:
            application/json:
              schema:
                type: object
                properties:
                  steamId:
                    type: string
                  profileUrl:
                    type: string
                  name:
                    type: string
                  avatar:
                    type: string
                  level:
                    type:
                    - integer
                    - 'null'
                  currency:
                    type: string
                    const: USD
                  value:
                    type: number
                    description: Total value of priced items, USD
                  items:
                    type: integer
                    description: Items in the inventory
                  priced:
                    type: integer
                    description: Items that have a market price
                  checkedAt:
                    type: string
                    format: date-time
                  stale:
                    type: boolean
                    description: true when a cached appraisal is returned while a fresh one is computed
                  topItems:
                    type: array
                    items:
                      type: object
                      properties:
                        name:
                          type: string
                        price:
                          type: number
                        count:
                          type: integer
                          description: Copies in the inventory, absent on cached appraisals
                        image:
                          type: string
                        url:
                          description: Item page on the site
                          type:
                          - string
                          - 'null'
                      required:
                      - name
                      - price
                      - image
                      - url
                  publicPage:
                    description: Public inventory page, only when the owner shared it
                    type:
                    - string
                    - 'null'
                  pricing:
                    type: string
                  source:
                    type: string
                required:
                - steamId
                - profileUrl
                - name
                - avatar
                - level
                - currency
                - value
                - items
                - priced
                - checkedAt
                - stale
                - topItems
                - publicPage
                - pricing
                - source
        '400':
          description: Missing steam parameter
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                  message:
                    type: string
                required:
                - error
        '401':
          description: 'unauthorized: the Authorization or X-Api-Key header carries a malformed, unknown or revoked API key; send no key header to be served anonymously'
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                  message:
                    type: string
        '403':
          description: private (Steam inventory is private) or hidden (owner opted out)
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                  message:
                    type: string
        '404':
          description: Profile not found
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                  message:
                    type: string
        '429':
          description: 'Per-address cooldown or the hourly limit of 60 appraisals per address (600 and no cooldown for known AI assistants by User-Agent, 300 per API key and no cooldown with a key); busy with a key or an assistant User-Agent when the minute budget of lookups of never appraised profiles is spent (30 per key, 8 shared by all assistants). Retry-After is the number of seconds until the limit window resets. Responses served from the stored appraisal (stale: true) are not counted'
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                  message:
                    type: string
        '503':
          description: busy (appraisal in progress) or upstream (Steam is temporarily refusing requests from the server); retry after Retry-After seconds. Known AI assistants are held for up to 25 seconds and requests with an API key for up to 25 seconds while a queued fresh appraisal completes before busy is returned; there is no wait while Steam refuses the server
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                  message:
                    type: string
      tags:
      - Inventory
components:
  securitySchemes:
    bearerKey:
      type: http
      scheme: bearer
      description: 'API key in Authorization: Bearer <key>. Optional; without a key the request is anonymous and keeps the per-address limits. Create a key at https://skinory.io/en/profile after signing in through Steam (the account has to be a day old, up to 3 keys per account). A key has its own limits instead of the address ones: 600 requests per minute, 300 appraisals per hour, 30 lookups per minute of profiles never appraised before, 200 profiles per /api/v1/inventories call and no per-address cooldown. A malformed, unknown or revoked key is refused with 401, a key of a banned account with 403. Keyed responses carry X-RateLimit-Limit, X-RateLimit-Remaining and X-RateLimit-Reset (seconds until the minute window resets).'
    headerKey:
      type: apiKey
      in: header
      name: X-Api-Key
      description: 'API key in the X-Api-Key header. Optional; without a key the request is anonymous and keeps the per-address limits. Create a key at https://skinory.io/en/profile after signing in through Steam (the account has to be a day old, up to 3 keys per account). A key has its own limits instead of the address ones: 600 requests per minute, 300 appraisals per hour, 30 lookups per minute of profiles never appraised before, 200 profiles per /api/v1/inventories call and no per-address cooldown. A malformed, unknown or revoked key is refused with 401, a key of a banned account with 403. Keyed responses carry X-RateLimit-Limit, X-RateLimit-Remaining and X-RateLimit-Reset (seconds until the minute window resets).'