DMarket API
Global marketplace covering both CS2 and Rust, read through its signed v2 API. Get DMarket's lowest ask and listing count for 24,551 CS2 and Rust items, refreshed every 30 minutes — in the same response as Steam and 7 other marketplaces. Grab a free key or read the docs.
Why read DMarket through this API
DMarket carries CS2 and Rust side by side and exposes Doppler phases per offer, so it is one of the few markets that can price a Ruby distinctly from a Phase 4.
DMarket retired its public price endpoint, so this data comes from the authenticated v2 offers API with Ed25519 request signing — the kind of integration work you would otherwise be doing yourself. We shard the scan across thousands of pages per cycle.
The point of a single API is that you are not maintaining 8 integrations. DMarket arrives in the
same shape as every other market: minor units, a currency, a listing count and a capture timestamp. Switch
?currency=EUR and every market converts together.
What you get for each DMarket item
- Lowest ask — the cheapest live listing, in integer minor units (no floats, no rounding drift).
- Listing count — how many listings sit behind that price, so you can tell a real floor from one lucky listing.
- Capture timestamp — when we last read it, per market. Never a silently stale number.
- Cross-market best — the cheapest venue for that item across all 9 sources, computed for you.
- Doppler phase prices — 469 phase-level quotes from DMarket.
- Your currency — 30+ currencies via daily ECB reference rates.
Example: DMarket in a cross-market response
One request returns every market's live price for an item. Prices below were true when this page was built:
curl "https://steamdataapi.com/api/v1/items/AK-47%20%7C%20Redline%20(Field-Tested)/markets" \
-H "Authorization: Bearer sdk_YOUR_KEY"
{
"currency": "USD",
"best": { "market": "csfloat", "price": 2871 },
"spread": 297,
"markets": [
{ "market": "csfloat", "price": 2871, "quantity": 3450, "capturedAt": "2026-07-30T11:40:02Z" },
{ "market": "buff163", "price": 2871, "quantity": 10589, "capturedAt": "2026-07-30T11:40:06Z" },
{ "market": "youpin", "price": 2926, "quantity": 10000, "capturedAt": "2026-07-30T11:40:06Z" },
{ "market": "c5game", "price": 2971, "quantity": 2428, "capturedAt": "2026-07-30T11:40:06Z" },
{ "market": "skinport", "price": 3015, "quantity": 559, "capturedAt": "2026-07-30T11:40:06Z" }
]
}
At build time DMarket was asking $30.16 for that item with 242 listings, against $28.71 at the cheapest venue (csfloat). That gap is exactly what the best and spread fields hand you without comparing anything yourself.
Tracking DMarket prices over time
A single ask tells you today; a series tells you whether today is unusual. Every market accrues a daily lowest-ask point, so you can pull DMarket's own history and compare it against Steam's median-sale series — which reaches back to 2013-08-13 and totals 15,581,753 daily points across the catalog.
curl "https://steamdataapi.com/api/v1/items/AK-47%20%7C%20Redline%20(Field-Tested)/history?source=markets&days=90" \
-H "Authorization: Bearer sdk_YOUR_KEY"
The two series answer different questions. Steam's median is what items actually sold for, which lags but cannot be moved by one optimistic listing. DMarket's daily low is what you could have bought at. Traders generally want both: the sale price to value a position, the ask to act on one.
From a DMarket price to a portfolio total
The same prices drive inventory valuation. Give the inventory endpoint a public SteamID and every item comes back priced — at the Steam ask and at cross-market real value, with DMarket included in the comparison — plus float, paint seed and Doppler phase where they apply, and a portfolio total in your currency.
const res = await fetch(
"https://steamdataapi.com/api/v1/inventory/76561198000000000?game=cs2¤cy=EUR",
{ headers: { Authorization: "Bearer sdk_YOUR_KEY" } },
);
const { totalValue, items } = await res.json();
DMarket versus the other markets we read
Item coverage differs a lot by venue. These counts are live from our own catalog:
| Marketplace | Items priced | Games |
|---|---|---|
| DMarket (this page) | 24,551 | CS2 + Rust |
| Skinport | 29,507 | CS2 + Rust |
| CSFloat | 27,360 | CS2 |
| Buff163 | 13,417 | CS2 |
| Waxpeer | 27,135 | CS2 + Rust |
| WhiteMarket | 27,054 | CS2 |
| YouPin898 | 13,081 | CS2 |
| C5Game | 13,425 | CS2 |
Steam itself is the ninth source: 29,458 CS2 and 5,397 Rust items carry a Steam ask, with median-sale history back to 2013 — 15,581,753 daily points in total.
Frequently asked questions
Does the DMarket API cover Rust as well as CS2?
Yes. We currently price 19,448 CS2 items and 5,103 Rust items from DMarket. Pass ?game=rust to filter.
How fresh are DMarket prices?
DMarket is re-read every 30 minutes. Every price carries a capturedAt timestamp so you can see exactly how old it is rather than guessing.
Do I get DMarket prices for Doppler phases?
Yes — DMarket quotes phases per listing, and we hold 469 phase prices across 101 knives from it. Ruby, Sapphire, Black Pearl, Emerald and Phase 1–4 are priced separately.
Can I get historical DMarket prices?
Yes. Every market accrues a daily lowest-ask series, so /history?source=markets returns DMarket's day-by-day price next to the others. Steam's median-sale series reaches back to 2013-08-13 and is on the same endpoint with ?source=steam.
What happens when DMarket stops listing an item?
It drops out of that item's markets array once its last capture ages past seven days, rather than showing a price nobody is offering. The cross-market real value keeps its last known figure, so a delisting does not turn your valuations into nulls.
Is this an official API?
No. This is an independent API that reads public marketplace data and serves it in one normalised shape. We are not affiliated with DMarket, Valve or Steam.
Start reading DMarket prices
Free key, no card. Create one, then call
/api/v1/items/{name}/markets. Full reference in the docs,
limits on pricing.