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 authenticationUpdated
WOK APIcurl --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"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.
WOK APIcurl --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.
WOK 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.
WOK APIcurl --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"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();WOK APIimport 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.
| Field | Type | Meaning |
|---|---|---|
game | string | Requested named game key. |
query | string | Search text; q is a substring search, not an exact-name assertion. |
source | string|null | Exact saved source filter; buff selects BUFF163 for CS2. |
items[].market_hash_name | string | Exact market hash name to match before using a quote. |
items[].source_count | integer | Number of returned source rows for this item. |
items[].prices[].source | string | Source of this observation. |
items[].prices[].price_usd | number | Saved source observation in USD. |
items[].prices[].volume | integer | Source activity/count metadata, never a player's item count. |
items[].prices[].updated_at | number | Source observation timestamp, not the time of this API request. |
next_cursor | string|null | Opaque cursor for the next page with the same filters. |
has_more | boolean | Whether 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.