/v1/arbitrage/opportunities
Ranked cross-market arbitrage opportunities. Each pairs a fresh ask on one market with a fresh bid on another and reports the gross spread (spreadBps/spreadCents), an estimated net before withdrawal/trading fees (estimatedNetCents), the tradable quantity, the estimated notional, and per-leg freshness. All prices are integer USD cents.
Each opportunity pairs a fresh ask on one market (buy, where you'd buy) with a fresh bid on another (sell, where you'd sell), and reports the gross spread (spreadBps / spreadCents) plus an estimatedNetCents before withdrawal and trading fees. Read feeNotes: the net is an estimate, not a guarantee.
maxTradableQuantity is the size you could actually move across both legs; freshness gives each leg's quote age in milliseconds so you can drop stale pairs. Tune the feed with minSpreadBps, minNotionalCents, limit, and sort.
Parameters
minNotional is accepted as a deprecated alias.)estimatedNetCents (default) | spreadBps.csfloat,buff163.Response fields
sort (default estimatedNetCents).opportunities.length).Nested and shared shapes link to the API Objects reference.
Errors
Authorization header, unsupported scheme, or a key that is unknown, inactive, expired, or revoked.export SKINPRICER_API_KEY="sp_live_•••"
curl -G "https://pricing.skinpricer.com/v1/arbitrage/opportunities" \
--data-urlencode "limit=20" \
--data-urlencode "minSpreadBps=200" \
-H "Authorization: ApiKey $SKINPRICER_API_KEY"// npm i @skinpricer/sdk
import { SkinpricerClient } from "@skinpricer/sdk";
const client = new SkinpricerClient({
apiKey: process.env.SKINPRICER_API_KEY!,
authScheme: "ApiKey",
});
const { opportunities } = await client.arbitrage.opportunities({ minSpreadBps: 200, limit: 20 });
for (const o of opportunities) console.log(o.marketHashName, o.buy.market, "->", o.sell.market, o.spreadBps, "bps");import os
import requests
res = requests.get(
"https://pricing.skinpricer.com/v1/arbitrage/opportunities",
params={"limit": "20", "minSpreadBps": "200"},
headers={"Authorization": f"ApiKey {os.environ['SKINPRICER_API_KEY']}"},
timeout=10,
)
res.raise_for_status()
print(res.json())Authenticated endpoint: call it with your API key from your own client (see the code sample).
{
"opportunities": [
{
"canonicalItemId": "cmlofcnv60ob001vs1ttav3c4",
"marketHashName": "★ Butterfly Knife | Doppler (Factory New) - Black Pearl",
"slug": "butterfly-knife-doppler-factory-new-black-pearl",
"imageUrl": "https://community.akamai.steamstatic.com/economy/image/...",
"buy": {
"market": "avanmarket",
"price": 838504,
"quoteSize": 2,
"updatedAt": "2026-06-23T22:02:19.569Z",
"isStale": false
},
"sell": {
"market": "buff163",
"price": 1102328,
"quoteSize": 10,
"updatedAt": "2026-06-23T21:59:48.717Z",
"isStale": false
},
"spreadBps": 3146,
"spreadCents": 263824,
"estimatedNetCents": 263824,
"maxTradableQuantity": 2,
"estimatedNotionalCents": 1677008,
"feeNotes": "Estimated before withdrawal/trading fees; source prices are buyer-visible USD cents.",
"freshness": {
"buyAgeMs": 30366,
"sellAgeMs": 181218
},
"calculatedAt": "2026-06-23T22:02:49.935Z"
}
],
"totalCandidates": 8412,
"calculatedAt": "2026-06-23T22:02:49.935Z"
}