Build a CS2 arbitrage scanner
Arbitrage starts with the same skin listed at different prices on different markets. One call to the Skinstrack items endpoint returns every item with a price per marketplace, so finding the biggest gaps is a sort.
- Stack
- Node.js 18+, TypeScript
- Plan
- Paid (Standard and up)
- Data
- 34+ marketplaces, refreshed ~15 min
- 1
Get a free Skinstrack API key
Sign in with Steam on skinstrack.com and create a key in the dashboard. The free plan gives 50 requests a month on Steam prices with no card. Paid plans from $24.99 a month unlock all 34+ marketplaces. Keep the key in an environment variable, never in source code.
terminalbashexport SKINSTRACK_API_KEY=your-api-key - 2
Install the SDK
Same official package as the Node.js example.
terminalbashnpm install skinstrack - 3
Scan for the largest spreads
Fetch every item on the markets you trade on, keep items with real listings and enough liquidity, then rank by the gap between the cheapest and the dearest market.
scan.tstsimport { SkinstracksV2 } from "skinstrack/v2"; const client = new SkinstracksV2({ apiKey: process.env.SKINSTRACK_API_KEY! }); const items = await client.getItems({ providers: "buff163,csfloat,skinport,waxpeer" }); const gaps = items .filter((item) => (item.liquidity ?? 0) >= 60) .map((item) => { const listed = item.prices.filter((p) => p.price > 1 && p.count > 0); if (listed.length < 2) return null; const sorted = [...listed].sort((a, b) => a.price - b.price); const buy = sorted[0]; const sell = sorted[sorted.length - 1]; return { name: item.market_hash_name, buy, sell, spread: (sell.price - buy.price) / buy.price }; }) .filter((gap) => gap !== null && gap.spread > 0.1) .sort((a, b) => b!.spread - a!.spread) .slice(0, 20); for (const gap of gaps) { console.log( `${(gap!.spread * 100).toFixed(1)}% ${gap!.name} buy ${gap!.buy.provider} $${gap!.buy.price} sell ${gap!.sell.provider} $${gap!.sell.price}` ); } - 4
Account for fees before trading
A raw spread is not profit. Subtract the selling fee of the target market and any withdrawal cost before acting. The Skinstrack marketplace comparison pages list fees and payment methods for each market.
Ready to run it?
Get a Skinstrack API key in a minute. Free tier: 50 requests per month on Steam prices, no card required.