Skip to content
API

BUFF163 CS2 prices

BUFF163 price API for CS2

Read saved BUFF163 listing prices in USD, or apply them to a public CS2 inventory with explicit fallback control.

GET /v1/items?game=cs2&source=buffBearer authentication

Updated

curlWOK API
curl --fail-with-body \
  -H "Authorization: Bearer $WOK_API_KEY" \
  --get "https://woksteamapi.com/v1/items" \
  --data-urlencode "game=cs2" \
  --data-urlencode "q=AK-47 | Redline (Field-Tested)" \
  --data-urlencode "source=buff"
CS2BUFF163 catalog coverage
USDlowest-listing observations
Auto excludesmix may use eligible recent BUFF prices
Strict modeno silent source fallback

Use BUFF prices for an owned inventory

The catalog quickstart below looks up market items without a SteamID. To value a player's actual items, request the inventory endpoint instead.

BUFF-only CS2 inventoryWOK API
curl --fail-with-body \
  -H "Authorization: Bearer $WOK_API_KEY" \
  "https://woksteamapi.com/v1/inventory?steam_id=76561198090744629&game=cs2&top=0&price_source=buff&strict=1"

Read status before using total. For an ok result, matched items have pricesource="buff" and a USD pricemedian. Missing BUFF prices remain null; unpriced tells you how much inventory is not valued. The total covers only priced, sellable items, so it is not a full appraisal when coverage is incomplete.

Need the same snapshot valued repeatedly? Normal successful cache hits use the current local catalog. To forbid a new inventory scan entirely, use price-only refresh; a missing snapshot returns inventory_cache_miss. Each API operation still consumes WOK plan quota even when no Steam or price-provider request is made.

When a BUFF observation is missing or too old

An unmatched catalog search can return items=[] with has_more=false; no price should be inferred from that result. Because q is a substring search, page through next_cursor and compare each market_hash_name exactly before declaring a specific item absent. A row with price_usd still needs an updated_at check against your application's maximum acceptable age. If it fails that policy, show the value as stale or unavailable; WOK does not promise that every saved observation is current to your threshold.

Example: no matching saved BUFF rowWOK API
{"items": [], "next_cursor": null, "has_more": false}

CS2 items and inspect permissionsQuote, batch and catalog endpoint differencesCompare WOK with SteamWebAPIValidate a SteamWebAPI migration

Quickstart

Use WOK from a trusted server. Keep the API key outside browser bundles and public repositories.

curlWOK API
curl --fail-with-body \
  -H "Authorization: Bearer $WOK_API_KEY" \
  --get "https://woksteamapi.com/v1/items" \
  --data-urlencode "game=cs2" \
  --data-urlencode "q=AK-47 | Redline (Field-Tested)" \
  --data-urlencode "source=buff"
JavaScript (Node.js)WOK API
// Node.js: keep the API key on your server.
const url = new URL("https://woksteamapi.com/v1/items");
url.search = new URLSearchParams({
  game: "cs2",
  q: "AK-47 | Redline (Field-Tested)",
  source: "buff"
});
const response = await fetch(url, {
  headers: { Authorization: `Bearer ${process.env.WOK_API_KEY}` }
});
if (!response.ok) throw new Error(`${response.status}: ${await response.text()}`);
const quote = await response.json();
PythonWOK API
import os
import requests

response = requests.get(
    "https://woksteamapi.com/v1/items",
    headers={"Authorization": f"Bearer {os.environ['WOK_API_KEY']}"},
    params={
        "game": "cs2",
        "q": "AK-47 | Redline (Field-Tested)",
        "source": "buff",
    },
    timeout=10,
)
response.raise_for_status()
quote = response.json()

Response example

The values below illustrate the response shape. Field names and types match the public contract.

JSON

application/json
{
  "game": "cs2",
  "query": "AK-47 | Redline (Field-Tested)",
  "source": "buff",
  "items": [
    {
      "game": "cs2",
      "market_hash_name": "AK-47 | Redline (Field-Tested)",
      "source_count": 1,
      "prices": [
        {
          "source": "buff",
          "price_usd": 11.25,
          "volume": 3,
          "updated_at": 1787572800.0
        }
      ]
    }
  ],
  "next_cursor": null,
  "has_more": false
}

Response schema

Stable fields for typed clients, storage and error handling.

BUFF163 price API for CS2 response schema
FieldTypeMeaning
gamestringRequested named game key.
querystringSearch text; q is a substring search, not an exact-name assertion.
sourcestring|nullExact saved source filter; buff selects BUFF163 for CS2.
items[].market_hash_namestringExact market hash name to match before using a quote.
items[].source_countintegerNumber of returned source rows for this item.
items[].prices[].sourcestringSource of this observation.
items[].prices[].price_usdnumberSaved source observation in USD.
items[].prices[].volumeintegerSource activity/count metadata, never a player's item count.
items[].prices[].updated_atnumberSource observation timestamp, not the time of this API request.
next_cursorstring|nullOpaque cursor for the next page with the same filters.
has_morebooleanWhether another page is available.

Limits and error behavior

Rules clients should handle explicitly in production.

BUFF163 coverage is CS2-only. Inventory auto excludes BUFF, but mix can select an eligible BUFF observation no older than 72 hours after its outlier check. Choose price_source=buff with strict=1 when BUFF-only values are required. Other named games have no BUFF coverage promise.

GET /v1/items?source=buff is a source-filtered catalog read, not an inventory. q searches substrings; match market_hash_name exactly and follow next_cursor until found or has_more is false. No matching catalog row returns items=[], not a fake quote.

For inventories, price_source=buff&strict=1 requires a usable BUFF price. Otherwise pricemedian is null and unpriced increases. With strict=0, another source may be selected: inspect pricesource before labeling that item or total as BUFF-only.

These are lowest-listing observations in USD, not CNY amounts, buy orders, guaranteed sale proceeds or instance-level appraisals. Float, pattern, stickers, fees and liquidity can change value.

WOK imports the BUFF163 feed through its authorized Pricempire integration. This is not an official BUFF developer endpoint. Use a WOK API key; no BUFF login, Steam bot session, trading, buying, selling or account-management endpoints are provided.

Cache and freshness semantics

How to tell whether data was reused, shared or refreshed.

Requests read WOK's shared local catalog. Selecting source=buff or price_source=buff does not make a live provider request or force the upstream feed to update.

items[].prices[].updated_at is the provider's observation/change timestamp. A price can remain unchanged while the provider checks it again; the API does not replace that timestamp with the download or response time.

For a priced inventory, items[].priceupdatedat is the selected observation time. meta.cache_age is the inventory snapshot's age; neither field substitutes for the other.

Coverage can change between catalog refreshes. Decide a maximum acceptable observation age in your application and show unavailable or stale prices explicitly. No fixed real-time SLA is implied.

Frequently asked questions

Direct answers about access, freshness and result semantics.

Do I need to sign in to BUFF163?

No. You authenticate to WOK with a server-side API key. WOK imports the BUFF163 feed through an authorized Pricempire integration; it is not a direct official BUFF account API.

Will auto or mix use BUFF prices?

Auto excludes BUFF. Mix may select a BUFF observation no older than 72 hours when it passes the outlier check. Choose price_source=buff&strict=1 for BUFF-only inventory values, or source=buff for catalog rows.

How do I require BUFF-only inventory values?

Send price_source=buff&strict=1. Items without a usable BUFF price keep pricemedian=null and contribute to unpriced. With strict=0, other sources may fill gaps.

Does this API place trades or return CNY prices?

No. This integration exposes read-only CS2 price observations normalized to USD. It does not buy or sell items, manage BUFF accounts or return an executable trade quote.