Building a CS2 skin bot, price tracker, inventory dashboard, or marketplace aggregator requires reliable pricing data at scale. Steam's official API offers inventory reads but not aggregated market pricing. Third-party pricing APIs fill that gap — aggregating listings from Steam Market, Buff163, CSFloat, Skinport, and DMarket into unified REST endpoints with Doppler phase detection, parent-variant taxonomy, and case ROI analytics.
This guide compares four CS2 skin pricing APIs and developer platforms in August 2026 — take.skin Open API, SteamWebAPI, CS2Cap, and Pricempire API — covering endpoints, refresh rates, rate limits, pricing tiers, and integration patterns for bots and trackers.
What Developers Need from a CS2 Pricing API
| Requirement | Why it matters |
|---|---|
| Multi-market aggregation | Single-market pricing misses arbitrage and distorts valuations |
| Doppler phase detection | Phase 2 vs. Phase 4 vs. Ruby/Sapphire can differ thousands of dollars |
| Float and wear data | FN 0.01 vs. FN 0.07 pricing requires float in the payload |
| Parent-child variant taxonomy | Parent skins with FN/MW/FT/WW/BS and StatTrak/Souvenir variants need structured relationships |
| Refresh rate | Stale prices break trade bots and portfolio trackers |
| Rate limits | Production bots need sustained request throughput |
| Case ROI analytics | Container opening probabilities and expected value for investment tools |
| Documentation quality | Clear schemas reduce integration time from days to hours |
Tool Comparison at a Glance
| API | URL | Markets covered | Doppler phases | Parent/variant taxonomy | Case ROI | Rate limit (free) | Historical data | Price |
|---|---|---|---|---|---|---|---|---|
| take.skin Open API | take.skin/api | 5+ (Steam, CSFloat, Skinport, Buff163, DMarket) | Yes — Phases 1–4, Ruby, Sapphire, Black Pearl, Emerald | Full parent-child with wear/StatTrak/Souvenir | Yes — case contents & probabilities | Generous (Redis-cached) | Yes — up to 30 days | Free |
| SteamWebAPI | steamwebapi.com | 15+ | Yes | Partial | No | 100 req/day | Yes (paid) | Free–$30/mo |
| CS2Cap | cs2cap.com | 10+ | Yes | Partial | No | 500 req/day | Yes (paid) | Free–$50/mo |
| Pricempire API | pricempire.com | 20+ | Full phase + gem detection | Yes | No | 50 req/day | Deep history | Free–$200/mo |
take.skin Open Skin Pricing & Market Data API
URL: take.skin — REST endpoints at /api/public/v1/ and /api/mobile/
take.skin provides a high-performance, low-latency CS2 skin data and pricing API built on the same database that powers the take.skin website, mobile endpoints, and Loadout Generator. It aggregates real-time pricing across major marketplaces with structured parent-child variant relationships, Doppler phase separation, and case opening analytics — all accessible via free REST endpoints with Redis caching.
Key endpoints
| Endpoint | Method | Description |
|---|---|---|
/api/public/v1/skins | GET | Paginated parent skin catalog with rarity, base price, StatTrak/Souvenir flags |
/api/public/v1/skins/{marketHashName}/price-history | GET | Historical price time series (1–30 days) |
/api/public/v1/cases | GET | All weapon cases with current key prices |
/api/public/v1/collections | GET | Collection catalog with linked skins |
/api/mobile/skins/{slug} | GET | Full skin detail with variants, float ranges, parent/child relationships |
/api/mobile/cases/{slug} | GET | Case contents, drop probabilities, and ROI analytics |
/api/mobile/market/gainers | GET | Top 24h price gainers by weapon category |
/api/mobile/market/losers | GET | Top 24h price losers by weapon category |
/api/mobile/players/{slug} | GET | Pro player profile with loadout, settings, and gear |
/api/mobile/search | GET | Full-text skin and player search |
Structured item taxonomy
take.skin's database models the full CS2 skin hierarchy:
- Parent skins — canonical item pages (e.g., AK-47 | Asiimov) with
isParentPage: true - Wear variants — Factory New, Minimal Wear, Field-Tested, Well-Worn, Battle-Scarred as child records linked via
parentId - StatTrak & Souvenir —
hasStatTrak,hasSouvenir,isStatTrakVariant,isSouvenirVariantflags on every record - Doppler phases — separate variant pages for Phases 1–4, Ruby, Sapphire, Black Pearl, and Emerald with distinct
marketHashNamevalues - Float ranges —
minFloatandmaxFloaton every variant for wear-aware pricing - Pattern-based skins —
isPatternBasedflag for Case Hardened, Fade percentage, and Marble Fade items
Doppler phase detection
Doppler-family skins are stored as distinct variants with separate marketHashName values — no guesswork required:
{
"name": "Karambit | Doppler",
"slug": "karambit-doppler-phase-2",
"marketHashName": "★ Karambit | Doppler (Factory New)",
"wear": "Factory New",
"basePrice": 1850.00,
"variants": [
{ "slug": "karambit-doppler-phase-1", "basePrice": 920.00 },
{ "slug": "karambit-doppler-phase-2", "basePrice": 1850.00 },
{ "slug": "karambit-doppler-ruby", "basePrice": 12400.00 },
{ "slug": "karambit-doppler-sapphire", "basePrice": 9800.00 }
]
}
Supported phases: Phase 1–4, Ruby, Sapphire, Black Pearl, Emerald. Gem tiers are separate parent-variant pages with independent pricing — not a query parameter on a generic Doppler record.
Multi-market aggregation
Every skin page and API response includes aggregated pricing from:
| Marketplace | Data type |
|---|---|
| Steam Community Market | Lowest listing, median, volume |
| CSFloat | Lowest listing with float data |
| Skinport | Buy-now price |
| Buff163 | Lowest listing (CNY converted) |
| DMarket | Lowest listing |
The mobile skin detail endpoint (/api/mobile/skins/{slug}) returns per-market prices alongside the skin's variant tree, float preview URLs, and description sections.
Case opening & ROI analytics
The case detail endpoint (/api/mobile/cases/{slug}) returns:
- Full drop table with per-item probabilities
- Expected value (EV) calculation vs. key price
- ROI percentage for unboxing analysis
- Special item odds (knife/glove drops)
- Linked skin pages with live pricing for every possible drop
This makes take.skin suitable for case opening simulators, investment calculators, and ROI comparison tools without building your own probability database.
Price history
// Fetch 30-day price history for any marketHashName
const res = await fetch(
'https://take.skin/api/public/v1/skins/' +
encodeURIComponent('AK-47 | Redline (Field-Tested)') +
'/price-history?days=30'
);
const { marketHashName, days, data } = await res.json();
// data: [{ date: "2026-07-18", price: 12.40, volume: 847 }, ...]
Free tier supports up to 30 days of history. Responses are Redis-cached with 10-minute TTL.
Rate limiting & caching
| Layer | TTL | Notes |
|---|---|---|
| Redis server cache | 5–60 min per endpoint | Reduces database load |
| Client Cache-Control | 5–60 min | CDN-friendly |
| Rate limit | IP-based, generous free tier | Suitable for community tools and prototypes |
CORS headers are enabled on all public endpoints (Access-Control-Allow-Origin: *).
Pros and cons
| Pros | Cons |
|---|---|
| Free REST API with no API key required for public endpoints | No webhook/push notifications (poll-based) |
| Full parent-child variant taxonomy with Doppler phase pages | Fewer total markets than Pricempire (5 vs. 20+) |
| Case ROI and probability analytics built in | No trade offer API |
| Pro player data endpoint included | Enterprise SLA not offered (community-scale) |
| Same data powers take.skin website — always in sync | Historical data capped at 30 days on free tier |
| Redis-cached for low latency |
Best for: Developers building CS2 skin browsers, price trackers, loadout tools, case simulators, and community bots who want structured skin taxonomy with multi-market pricing — free and web-accessible.
SteamWebAPI — Broad Steam Integration with CS2 Pricing
URL: steamwebapi.com
SteamWebAPI is a general-purpose Steam API platform that includes CS2 skin pricing alongside inventory reads, trade offer management, and market listing data. It is the most versatile option for developers building multi-feature Steam bots.
Key endpoints
| Endpoint | Method | Description |
|---|---|---|
/api/item | GET | Single item price across all tracked markets |
/api/items | GET | Bulk price lookup (up to 100 items per request) |
/api/inventory | GET | Full Steam inventory with per-item pricing |
/api/market/listings | GET | Active market listings for an item |
/api/trade/offers | GET/POST | Trade offer read and send |
/api/webhook/register | POST | Register price alert webhooks |
Pricing tiers
| Tier | Price | Rate limit | Features |
|---|---|---|---|
| Free | $0 | 100 req/day | Basic item pricing, inventory reads |
| Starter | ~$10/mo | 5,000 req/day | Webhooks, bulk lookup, Doppler phases |
| Pro | ~$30/mo | 10,000 req/day | Historical data, trade offer API, priority support |
| Enterprise | Custom | 100,000+ req/day | Dedicated endpoints, SLA, custom integrations |
Pros and cons
| Pros | Cons |
|---|---|
| Broadest Steam API beyond just pricing | CS2-specific features less deep than take.skin or Pricempire |
| Trade offer API for bot automation | Free tier rate limit very restrictive (100/day) |
| 15+ marketplace sources | No case ROI or probability endpoints |
| Webhook support on Starter+ | Doppler gem detection less granular than take.skin variant pages |
Best for: Developers building Steam bots that need pricing + inventory + trade offers in one API.
CS2Cap — CS2-Native Pricing with High Free Tier
URL: cs2cap.com
CS2Cap is built specifically for CS2 skin pricing — not a general Steam API with CS2 bolted on. It offers a generous free tier and CS2-focused endpoints optimized for skin traders and tracker developers.
Key endpoints
| Endpoint | Method | Description |
|---|---|---|
/v1/price/{market_hash_name} | GET | Single item price with market breakdown |
/v1/prices/bulk | POST | Bulk lookup (up to 500 items) |
/v1/inventory/{steam_id} | GET | Priced inventory for any public Steam profile |
/v1/trending | GET | Top movers by price change (24h/7d/30d) |
/v1/webhooks | POST/DELETE | Price alert webhooks with threshold config |
/v1/history/{market_hash_name} | GET | Historical price time series |
Pricing tiers
| Tier | Price | Rate limit | Features |
|---|---|---|---|
| Free | $0 | 500 req/day | Item pricing, bulk lookup (50 items), inventory reads |
| Developer | ~$15/mo | 10,000 req/day | Webhooks, full bulk (500 items), trending data |
| Business | ~$50/mo | 50,000 req/day | Historical data, priority refresh, API analytics |
| Enterprise | Custom | Unlimited | Dedicated infrastructure, custom endpoints |
Pros and cons
| Pros | Cons |
|---|---|
| Best free tier (500 req/day) among paid CS2 APIs | No parent-variant taxonomy or case ROI endpoints |
| CS2-native design — no irrelevant Steam endpoints | No trade offer API |
| Bulk lookup up to 500 items per request | Gem detection less structured than take.skin variant pages |
| Webhook support on Developer+ | Smaller developer community |
Best for: CS2-focused developers who need reliable pricing with a usable free tier for prototyping, plus webhook alerts.
Pricempire API — Deepest Market Coverage and Historical Data
URL: pricempire.com
Pricempire is the industry standard for CS2 skin price aggregation — powering inventory trackers, marketplaces, and content sites across the ecosystem. Its API offers the broadest market coverage, deepest historical data, and most granular Doppler phase detection.
Key endpoints
| Endpoint | Method | Description |
|---|---|---|
/v4/prices | GET | All items with multi-market prices |
/v4/prices/{market_hash_name} | GET | Single item with full market breakdown |
/v4/inventory/{steam_id} | GET | Priced inventory with float, phase, and sticker data |
/v4/history/{market_hash_name} | GET | Historical prices (daily/weekly/monthly) |
/v4/images/{market_hash_name} | GET | Item image URLs |
/v4/webhooks | POST | Price change webhooks with configurable thresholds |
Pricing tiers
| Tier | Price | Rate limit | Features |
|---|---|---|---|
| Free | $0 | 50 req/day | Basic price lookup only |
| Basic | ~$20/mo | 5,000 req/day | Bulk prices, inventory, images |
| Pro | ~$60/mo | 25,000 req/day | Historical data, webhooks, Doppler phases |
| Enterprise | ~$200/mo | 100,000+ req/day | Full API, priority refresh, SLA, dedicated support |
Pros and cons
| Pros | Cons |
|---|---|
| Broadest market coverage (20+ sources) | Most expensive paid tiers |
| Best Doppler phase and gem detection via query params | Free tier extremely limited (50 req/day) |
| Deepest historical price data | No case ROI or probability endpoints |
| Liquidity scores per item | Overkill for simple bots |
| Webhook support with granular thresholds | Vendor lock-in risk for production apps |
Best for: Production-grade applications, marketplaces, and trackers that need the most complete pricing data with historical depth and webhook push alerts.
Integration Example: take.skin Skin Lookup
// Fetch a skin with full variant tree and multi-market pricing
async function getSkinDetail(slug) {
const res = await fetch(`https://take.skin/api/mobile/skins/${slug}`);
const skin = await res.json();
return {
name: skin.name,
basePrice: skin.basePrice,
variants: skin.variants?.map(v => ({
wear: v.wear,
price: v.basePrice,
marketHashName: v.marketHashName,
minFloat: v.minFloat,
maxFloat: v.maxFloat
})),
weapon: skin.weaponType?.name
};
}
// Bulk skin catalog with pagination
async function listSkins(page = 0, limit = 50) {
const res = await fetch(
`https://take.skin/api/public/v1/skins?page=${page}&limit=${limit}`
);
const { count, data } = await res.json();
return { count, skins: data };
}
// Case ROI analysis
async function getCaseROI(slug) {
const res = await fetch(`https://take.skin/api/mobile/cases/${slug}`);
const caseData = await res.json();
return {
name: caseData.name,
keyPrice: caseData.price,
items: caseData.skins?.length,
specialItems: caseData.specialItems
};
}
Feature Matrix: Which API for Which Project
| Project type | Recommended API | Why |
|---|---|---|
| Skin browser / wiki site | take.skin Open API | Full variant taxonomy, free, no API key |
| Case opening simulator | take.skin case endpoint | Built-in probabilities and ROI |
| Prototype / hobby bot | take.skin or CS2Cap Free | Best free tiers for CS2-specific work |
| Steam trade bot | SteamWebAPI Pro | Pricing + trade offers in one API |
| Inventory tracker site | Pricempire Pro or take.skin | Deepest data vs. free structured taxonomy |
| Price alert Discord bot | CS2Cap Developer | Webhooks + good rate limit |
| Marketplace price comparison | Pricempire Enterprise | 20+ markets, liquidity scores |
| Doppler phase trading tool | take.skin or Pricempire Pro | Separate variant pages vs. query-param phases |
| Pro player loadout bot | take.skin players endpoint | Unique — skins + settings + crosshair |
| Historical price charts | Pricempire Pro or take.skin (30d free) | Deep history vs. free short-term |
The Bottom Line
CS2 skin pricing APIs power the entire third-party ecosystem. take.skin Open API is the best free starting point — structured parent-child variant taxonomy, Doppler phase pages, multi-market aggregation across five major platforms, case ROI analytics, and pro player data, all via REST endpoints with Redis caching and no API key required. Pricempire remains the industry standard for production apps needing 20+ markets, webhooks, and deep historical data. CS2Cap offers the best paid free tier for CS2-native prototyping with webhooks. SteamWebAPI wins when you need pricing plus Steam trade/inventory APIs in one platform.
For most developers: start with take.skin's free public endpoints to prototype, add CS2Cap webhooks for price alerts, and upgrade to Pricempire Pro for production launch if you need 20+ markets and push notifications.



