DMarket trading API (v2.0.0)

Download OpenAPI specification:

Welcome to the DMarket Trading API section. Our JSON-based API enables you to manage your DMarket inventory through the methods featured below. In order to use the API, please generate your personal API keys in the account settings.

Request signature instructions

A valid HTTP request to the trading API must include 3 request headers:

  1. X-Api-Key: public key (must be a hex string in lowercase) To get you your own public key, use https://dmarket.com/ (details : https://dmarket.com/faq#tradingAPI)

  2. X-Sign-Date: timestamp or current time Example: 1605619994. Must not be older than 2 minutes from the request time.

  3. X-Request-Sign: signature

The Ed25519 signature scheme is used for signing requests and proving items’ origin and ownership through public-private key pairs. Private and public keys diversification is aimed to provide secure back-to-back communication and the ability to rotate keys in case of security breaches on any side of the integration.

To make a signature, take the following steps:

  1. Build non-signed string formula (HTTP Method) + (Route path + HTTP query params) + (body string) + (timestamp) ). Example: POST/get-item?Amount=%220.25%22&Limit=%22100%22&Offset=%22150%22&Order=%22desc%22&1605619994)

  2. After you’ve created a non-signed string with a default concatenation method, sign it with Ed25519 (NaCl https://en.wikipedia.org/wiki/NaCl_(software) "sign" is Ed25519) using your secret key.

  3. Hex-encode the 64-byte Ed25519 signature

  4. Add your signature string to HTTP request headers X-Request-Sign (dmar ed25519 signature)

You can check out examples on https://github.com/dmarket/dm-trading-tools.

DMarket uses rate limiting to control the rate of API requests. Please read FAQ for details https://dmarket.com/faq#startUsingTradingAPI.

Account

User profile and balance.

Get user profile

Getting general user profile information.

Authorizations:
(ApiKeySignDateRequestSign)

Responses

Request samples

# Sign the request and set the three auth headers — reference clients: https://github.com/dmarket/dm-trading-tools
curl 'https://api.dmarket.com/account/v1/user' \
  -H "X-Api-Key: $DMARKET_PUBLIC_KEY" \
  -H "X-Sign-Date: $TIMESTAMP" \
  -H "X-Request-Sign: dmar ed25519 $SIGNATURE"

Response samples

Content type
application/json
{
  • "agreementsInfo": {
    },
  • "countryCode": "string",
  • "countryCodeFromIP": "string",
  • "email": "string",
  • "features": [
    ],
  • "ga_client_id": "string",
  • "hasActiveSubscriptions": true,
  • "hasHistoryEvents": true,
  • "id": "string",
  • "imageUrl": "string",
  • "isEmailVerified": true,
  • "isPasswordSet": true,
  • "level": 0,
  • "linkedGames": [
    ],
  • "migrated": true,
  • "publicKey": "string",
  • "regType": "steam",
  • "restrictions": [
    ],
  • "settings": {
    },
  • "steamAccount": {
    },
  • "twitchAccount": {
    },
  • "username": "string"
}

Get account balance

Getting the current USD & DMC balance that is available for trading items / buying subscriptions. The response format is in coins (cents for USD, dimoshi for DMC).

Authorizations:
(ApiKeySignDateRequestSign)

Responses

Request samples

# Sign the request and set the three auth headers — reference clients: https://github.com/dmarket/dm-trading-tools
curl 'https://api.dmarket.com/account/v1/balance' \
  -H "X-Api-Key: $DMARKET_PUBLIC_KEY" \
  -H "X-Sign-Date: $TIMESTAMP" \
  -H "X-Request-Sign: dmar ed25519 $SIGNATURE"

Response samples

Content type
application/json
{
  • "dmc": "string",
  • "dmcAvailableToWithdraw": "string",
  • "usd": "string",
  • "usdAvailableToWithdraw": "string"
}

Buy items

Browse marketplace offers and buy orders (targets), and purchase items.

Find buy orders (targets) by item title

Returns aggregated buy orders (targets) for a specific game and item title. Use this endpoint to see current demand: how many buy orders exist and at what prices.

Path parameters:

  • game_id: Game identifier (e.g., csgo, dota2, rust).
  • title: Exact in-game item title.

Response contains a list of orders with fields: amount (number of items requested), price (best price for that title and attributes), title, and attributes (quality/rarity/skin parameters, depending on the game).

Authorizations:
(ApiKeySignDateRequestSign)
path Parameters
game_id
required
string
title
required
string

Responses

Request samples

# Sign the request and set the three auth headers — reference clients: https://github.com/dmarket/dm-trading-tools
curl 'https://api.dmarket.com/marketplace-api/v1/targets-by-title/a8db/AK-47%20%7C%20Redline%20%28Field-Tested%29' \
  -H "X-Api-Key: $DMARKET_PUBLIC_KEY" \
  -H "X-Sign-Date: $TIMESTAMP" \
  -H "X-Request-Sign: dmar ed25519 $SIGNATURE"

Response samples

Content type
application/json
{
  • "orders": [
    ]
}

Get aggregated market prices for item titles

Returns aggregated pricing for specified item titles, including best buy (order) and best sell (offer) prices and the total number of orders/offers per title. Use this to quickly assess market depth and price levels.

Request body:

  • filter.game: Game identifier.
  • filter.titles[]: List of exact item titles to aggregate.
  • limit, cursor: Pagination controls.

Response:

  • aggregatedPrices[]: For each title: orderBestPrice, orderCount, offerBestPrice, offerCount.
  • nextCursor: Use to fetch the next page.
Authorizations:
(ApiKeySignDateRequestSign)
Request Body schema: application/json
required
cursor
string
limit
string <int64>
object (ListAggregatedPricesRequestFilter)

Responses

Request samples

Content type
application/json
{
  • "filter": {
    },
  • "limit": "100"
}

Response samples

Content type
application/json
{
  • "aggregatedPrices": [
    ],
  • "nextCursor": "string"
}

List user targets NEW

Get the list of the current user's targets. Prices are returned as integer cents. 'gameId' param values are: CS2 - a8db, Team Fortress 2 - tf2, Dota 2 - 9a92, Rust - rust.

Authorizations:
(ApiKeySignDateRequestSign)
query Parameters
gameId
required
string
Enum: "a8db" "9a92" "tf2" "rust"

Game identifier. One of: a8db (CS2), 9a92 (Dota 2), tf2, rust.

title
string

Filter targets by title prefix (case-insensitive).

treeFilters
string

Attribute filters in comma-separated key=value format. Values must match how the attribute is stored (typically the lowercase Steam string; see allowed values below).

Supported common keys: categoryPath, amount, status. Filter by game, title, and price via the top-level gameId, title, and priceFrom/priceTo query parameters.

CS2 keys: category, exterior, floatPart, isAdvanced, paintSeed, phase.

Allowed CS2 values:

  • exterior: factory new, minimal wear, field-tested, well-worn, battle-scarred, not painted
  • phase: phase-1, phase-2, phase-3, phase-4, ruby, sapphire, emerald, black-pearl
  • floatPart: FN-0..FN-6, MW-0..MW-4, FT-0..FT-4, WW-0..WW-4, BS-0..BS-4 (bucketed float ranges per exterior)
  • category: stattrak_tm (_tm is translated to the ™ symbol server-side), souvenir, normal, (knives)

Multi-value: suffix key with [], e.g. exterior[]=factory new,exterior[]=minimal wear (URL-encode the space as %20).

Negation: prefix key with not_, e.g. not_exterior=factory new.

Example: categoryPath=rifle,exterior[]=factory new.

priceFrom
integer <int64>

Lower bound of the target price range in cents (inclusive).

priceTo
integer <int64>

Upper bound of the target price range in cents (inclusive).

orderBy
string
Enum: "price" "title" "createdAt"

Sort field. Supported values: price, title, createdAt.

orderDir
string
Enum: "asc" "desc"

Sort direction. Defaults to asc when orderBy is set.

limit
required
integer <int32> [ 1 .. 100 ]

Number of items to return per page. Range 1..100.

cursor
string <= 500 characters

Pagination cursor returned from a previous response.

Responses

Request samples

# Sign the request and set the three auth headers — reference clients: https://github.com/dmarket/dm-trading-tools
curl -G 'https://api.dmarket.com/marketplace-api/v2/user/targets' \
  --data-urlencode 'gameId=a8db' \
  --data-urlencode 'title=AK-47' \
  --data-urlencode 'treeFilters=categoryPath=rifle,exterior[]=factory new' \
  --data-urlencode 'orderBy=price' \
  --data-urlencode 'orderDir=asc' \
  --data-urlencode 'limit=10' \
  -H "X-Api-Key: $DMARKET_PUBLIC_KEY" \
  -H "X-Sign-Date: $TIMESTAMP" \
  -H "X-Request-Sign: dmar ed25519 $SIGNATURE"

Response samples

Content type
application/json
{
  • "items": [
    ],
  • "total": "3",
  • "cursor": ""
}

List user closed targets

Get the list of the user’s closed targets. The price amount format is in USD, i.e. 0.5 is 50 cents.

Authorizations:
(ApiKeySignDateRequestSign)
query Parameters
Limit
string <uint64>

Limits number of returned closed targets in response.

OrderDir
string
Default: "desc"
Enum: "desc" "asc"
TargetCreated.From
string <int64>
Example: TargetCreated.From=1730419200
TargetCreated.To
string <int64>
Example: TargetCreated.To=1730419200
TargetClosed.From
string <int64>
Example: TargetClosed.From=1730419200
TargetClosed.To
string <int64>
Example: TargetClosed.To=1730419200
Cursor
string

Cursor is next page identifier.

Finalization.From
string <int64>
Example: Finalization.From=1730419200
Finalization.To
string <int64>
Example: Finalization.To=1730419200
Status
Array of strings
Items Enum: "successful" "reverted" "trade_protected"

Responses

Request samples

# Sign the request and set the three auth headers — reference clients: https://github.com/dmarket/dm-trading-tools
curl -G 'https://api.dmarket.com/marketplace-api/v1/user-targets/closed' \
  --data-urlencode 'Limit=10' \
  --data-urlencode 'OrderDir=desc' \
  --data-urlencode 'Status=successful' \
  -H "X-Api-Key: $DMARKET_PUBLIC_KEY" \
  -H "X-Sign-Date: $TIMESTAMP" \
  -H "X-Request-Sign: dmar ed25519 $SIGNATURE"

Response samples

Content type
application/json
{
  • "Trades": [
    ],
  • "Total": "string",
  • "Cursor": "string"
}

Create targets

The request for target creation requires the following fields: "GameID" param (values are: CS2 - a8db, Team Fortress 2 - tf2, Dota 2 - 9a92, Rust - rust) and array of "Targets". The price amount format is in USD, i.e. 0.5 is 50 cents, "Title" - full item name. Also, additional attributes ("Attrs" field in #/components/schemas/marketplaceCreateTargetRequest) for each item such as "phase", "floatPartValue" and "paintSeed" are available. You can check possible values of additional attributes here. Limitations: maximum "Amount" value is 100; maximum quantity of targets in one request is 100; maximum number of created targets for one game is individual for each user and can be different for each game. You can contact our customer support team to find out your Target's limit.

Authorizations:
(ApiKeySignDateRequestSign)
Request Body schema: application/json
required
GameID
string

GameID of same assets in one single target entity.

Array of objects (marketplaceCreateTargetRequest)

List of targets to create.

Responses

Request samples

Content type
application/json
{
  • "GameID": "a8db",
  • "Targets": [
    ]
}

Response samples

Content type
application/json
{
  • "Result": [
    ]
}

Remove targets

Remove targets.

Authorizations:
(ApiKeySignDateRequestSign)
Request Body schema: application/json
required
Array of objects (marketplaceDeleteTargetRequest)

Targets list to delete.

Responses

Request samples

Content type
application/json
{
  • "Targets": [
    ]
}

Response samples

Content type
application/json
{
  • "Result": [
    ]
}

List marketplace offers NEW

Get the list of offers currently available for purchase on the DMarket storefront. Prices are returned as integer cents. 'gameId' param values are: CS2 - a8db, Team Fortress 2 - tf2, Dota 2 - 9a92, Rust - rust.

Authorizations:
(ApiKeySignDateRequestSign)
query Parameters
gameId
required
string
Enum: "a8db" "9a92" "tf2" "rust"
Example: gameId=a8db

Game identifier. One of: a8db (CS2), 9a92 (Dota 2), tf2, rust.

title
string

Filter offers by title prefix (case-insensitive).

treeFilters
string
Example: treeFilters=categoryPath=rifle,exterior[]=factory new

Attribute filters in comma-separated key=value format. Values must match how the attribute is stored (typically the lowercase Steam string; see allowed values below).

Supported common keys: categoryPath, type, tradeLockFrom, tradeLockTo. Filter by game, title, and price via the top-level gameId, title, and priceFrom/priceTo query parameters.

CS2 keys: exterior, paintSeed, floatPart, phase, category, collection, charmName, charmExists, sticker, isProskin, fadePercentFrom, fadePercentTo.

TF2 keys: exterior, collection, isCraftable. Dota 2 keys: hero.

Allowed CS2 values:

  • exterior: factory new, minimal wear, field-tested, well-worn, battle-scarred, not painted
  • phase: phase-1, phase-2, phase-3, phase-4, ruby, sapphire, emerald, black-pearl
  • floatPart: FN-0..FN-6, MW-0..MW-4, FT-0..FT-4, WW-0..WW-4, BS-0..BS-4 (bucketed float ranges per exterior)
  • category: stattrak_tm (_tm is translated to the ™ symbol server-side), souvenir, normal, (knives)

Allowed TF2 exterior values: factory new, minimal wear, field-tested, well-worn, battle-scarred, battle scarred.

Multi-value: suffix key with [], e.g. exterior[]=factory new,exterior[]=minimal wear (URL-encode the space as %20).

Negation: prefix key with not_, e.g. not_exterior=factory new. Negation is not supported for charmName/sticker.

Ranges: fadePercentFrom=10,fadePercentTo=90. Steam trade-lock filtering uses tradeLockFrom/tradeLockTo (remaining lock in days; tradeLockFrom is inclusive, tradeLockTo is exclusive).

Existence check: charmExists=true / charmExists=false.

Charm and sticker filters (charmName, sticker[], charmExists) apply to CS2 offers only.

Example: categoryPath=rifle,exterior[]=factory new,exterior[]=minimal wear.

priceFrom
integer <int64>

Lower bound of the offer price range in cents (inclusive).

priceTo
integer <int64>

Upper bound of the offer price range in cents (inclusive).

orderBy
string
Enum: "price" "title" "float" "createdAt" "discount"

Sort field. Supported values: price, title, float, createdAt, discount.

discount sorts by the offer's discount percent versus the appraiser's global market price; use orderBy=discount&orderDir=desc for best discount first. Offers without a discount come last, tie-broken by creation time (oldest first).

orderDir
string
Enum: "asc" "desc"

Sort direction. Defaults to asc when orderBy is set.

limit
required
integer <int32> [ 1 .. 100 ]

Number of items to return per page. Range 1..100.

cursor
string <= 500 characters

Pagination cursor returned from a previous response.

Responses

Request samples

# Sign the request and set the three auth headers — reference clients: https://github.com/dmarket/dm-trading-tools
curl -G 'https://api.dmarket.com/marketplace-api/v2/offers' \
  --data-urlencode 'gameId=a8db' \
  --data-urlencode 'title=AK-47' \
  --data-urlencode 'treeFilters=categoryPath=rifle,exterior[]=factory new' \
  --data-urlencode 'priceFrom=500' \
  --data-urlencode 'priceTo=5000' \
  --data-urlencode 'orderBy=price' \
  --data-urlencode 'orderDir=asc' \
  --data-urlencode 'limit=10' \
  -H "X-Api-Key: $DMARKET_PUBLIC_KEY" \
  -H "X-Sign-Date: $TIMESTAMP" \
  -H "X-Request-Sign: dmar ed25519 $SIGNATURE"

Response samples

Content type
application/json
{
  • "items": [
    ],
  • "total": "128",
  • "cursor": "eyJvZmZzZXQiOjEwfQ=="
}

Buy offers

Buy the selected offers from the market. As the result of the operation: the offer is removed, the items are transferred to the buyer, the purchase amount is transferred to the seller, the fee is transferred to DMarket. The price amount format is in coins (cents for USD).

Authorizations:
(ApiKeySignDateRequestSign)
Request Body schema: application/json
required
required
Array of objects (entity.OfferPrice)

Responses

Request samples

Content type
application/json
{
  • "offers": [
    ]
}

Response samples

Content type
application/json
{
  • "dmOffersFailReason": {
    },
  • "dmOffersStatus": {
    },
  • "orderId": "string",
  • "p2pOffersStatus": {
    },
  • "status": "TxPending",
  • "txId": "string"
}

Sell Items

Create, edit, delete and list your sell offers.

Deposit assets

Transferring items from a 3rd party inventory (e.g. a Steam game) to a Dmarket inventory.

Authorizations:
(ApiKeySignDateRequestSign)
Request Body schema: application/json
required
AssetID
Array of strings

List of asset id to deposit.

Responses

Request samples

Content type
application/json
{
  • "AssetID": [
    ]
}

Response samples

Content type
application/json
{
  • "DepositID": "string"
}

Get deposit status

Get information about current deposit transfers.

Authorizations:
(ApiKeySignDateRequestSign)
path Parameters
DepositID
required
string

Deposit operation unique identifier.

Responses

Request samples

# Sign the request and set the three auth headers — reference clients: https://github.com/dmarket/dm-trading-tools
curl 'https://api.dmarket.com/marketplace-api/v1/deposit-status/e5f6a7b8-c9d0-1234-ef01-567890123456' \
  -H "X-Api-Key: $DMARKET_PUBLIC_KEY" \
  -H "X-Sign-Date: $TIMESTAMP" \
  -H "X-Request-Sign: dmar ed25519 $SIGNATURE"

Response samples

Content type
application/json
{
  • "DepositID": "string",
  • "AssetID": [
    ],
  • "Status": "TransferStatusPending",
  • "Error": "string",
  • "Assets": [
    ],
  • "SteamDepositInfo": {
    }
}

List user offers NEW

Get the list of the current user's active sell offers for further management (edit price, remove from sale). Prices are returned as integer cents. 'gameId' param values are: CS2 - a8db, Team Fortress 2 - tf2, Dota 2 - 9a92, Rust - rust.

Authorizations:
(ApiKeySignDateRequestSign)
query Parameters
gameId
required
string
Enum: "a8db" "9a92" "tf2" "rust"
Example: gameId=a8db

Game identifier. One of: a8db (CS2), 9a92 (Dota 2), tf2, rust.

title
string

Filter offers by title prefix (case-insensitive).

treeFilters
string
Example: treeFilters=categoryPath=rifle,exterior[]=factory new

Attribute filters in comma-separated key=value format. Values must match how the attribute is stored (typically the lowercase Steam string; see allowed values below).

Supported common keys: categoryPath, type, priceCents, tradeLockFrom, tradeLockTo. Filter by game and title via the top-level gameId and title query parameters.

CS2 keys: exterior, paintSeed, floatPart, phase, category, collection, charmName, charmExists, sticker, isProskin, fadePercentFrom, fadePercentTo.

TF2 keys: exterior, collection, isCraftable. Dota 2 keys: hero.

Allowed CS2 values:

  • exterior: factory new, minimal wear, field-tested, well-worn, battle-scarred, not painted
  • phase: phase-1, phase-2, phase-3, phase-4, ruby, sapphire, emerald, black-pearl
  • floatPart: FN-0..FN-6, MW-0..MW-4, FT-0..FT-4, WW-0..WW-4, BS-0..BS-4 (bucketed float ranges per exterior)
  • category: stattrak_tm (_tm is translated to the ™ symbol server-side), souvenir, normal, (knives)

Allowed TF2 exterior values: factory new, minimal wear, field-tested, well-worn, battle-scarred, battle scarred.

Multi-value: suffix key with [], e.g. exterior[]=factory new,exterior[]=minimal wear (URL-encode the space as %20).

Negation: prefix key with not_, e.g. not_exterior=factory new. Negation is not supported for charmName/sticker.

Ranges: fadePercentFrom=10,fadePercentTo=90. Steam trade-lock filtering uses tradeLockFrom/tradeLockTo (remaining lock in days; tradeLockFrom is inclusive, tradeLockTo is exclusive).

Existence check: charmExists=true / charmExists=false.

Charm and sticker filters (charmName, sticker[], charmExists) apply to CS2 offers only.

Example: categoryPath=rifle,exterior[]=factory new,exterior[]=minimal wear.

orderBy
string
Enum: "price" "title" "float" "createdAt"

Sort field. Supported values: price, title, float, createdAt.

orderDir
string
Enum: "asc" "desc"

Sort direction. Defaults to asc when orderBy is set.

limit
required
integer <int32> [ 1 .. 100 ]

Number of items to return per page. Range 1..100.

cursor
string <= 500 characters

Pagination cursor returned from a previous response.

Responses

Request samples

# Sign the request and set the three auth headers — reference clients: https://github.com/dmarket/dm-trading-tools
curl -G 'https://api.dmarket.com/marketplace-api/v2/user/offers' \
  --data-urlencode 'gameId=a8db' \
  --data-urlencode 'title=AK-47' \
  --data-urlencode 'treeFilters=categoryPath=rifle,exterior[]=factory new' \
  --data-urlencode 'orderBy=createdAt' \
  --data-urlencode 'orderDir=desc' \
  --data-urlencode 'limit=10' \
  -H "X-Api-Key: $DMARKET_PUBLIC_KEY" \
  -H "X-Sign-Date: $TIMESTAMP" \
  -H "X-Request-Sign: dmar ed25519 $SIGNATURE"

Response samples

Content type
application/json
{
  • "items": [
    ],
  • "total": "7",
  • "cursor": ""
}

Batch create offers

Create multiple offers in a single request.

Authorizations:
(ApiKeySignDateRequestSign)
Request Body schema: application/json
required
Array of objects (marketplacev2CreateOfferRequest)

Responses

Request samples

Content type
application/json
{
  • "requests": [
    ]
}

Response samples

Content type
application/json
{
  • "offers": [
    ],
  • "failed": [
    ]
}

Batch update offers

Update multiple offers in a single request.

Authorizations:
(ApiKeySignDateRequestSign)
Request Body schema: application/json
required
Array of objects (marketplacev2UpdateOfferRequest)

Responses

Request samples

Content type
application/json
{
  • "requests": [
    ]
}

Response samples

Content type
application/json
{
  • "offers": [
    ],
  • "failed": [
    ]
}

Batch delete offers

Delete multiple offers in a single request.

Authorizations:
(ApiKeySignDateRequestSign)
Request Body schema: application/json
required
Array of objects (marketplacev2DeleteOfferRequest)

Responses

Request samples

Content type
application/json
{
  • "requests": [
    ]
}

Response samples

Content type
application/json
{
  • "offers": [
    ],
  • "failed": [
    ]
}

Sold user items

History of your completed sales.

List user closed offers

Get the list of the user’s closed sell offers. The price amount format is in USD, i.e. 0.5 is 50 cents.

Authorizations:
(ApiKeySignDateRequestSign)
query Parameters
Limit
string <uint64>

Limits number of returned closed offers in response.

OrderDir
string
Default: "desc"
Enum: "desc" "asc"
OfferCreated.From
string <int64>
Example: OfferCreated.From=1730419200
OfferCreated.To
string <int64>
Example: OfferCreated.To=1730419200
OfferClosed.From
string <int64>
Example: OfferClosed.From=1730419200
OfferClosed.To
string <int64>
Example: OfferClosed.To=1730419200
Cursor
string

Cursor is next page identifier.

Finalization.From
string <int64>
Example: Finalization.From=1730419200
Finalization.To
string <int64>
Example: Finalization.To=1730419200
Status
Array of strings
Items Enum: "successful" "reverted" "trade_protected"

Responses

Request samples

# Sign the request and set the three auth headers — reference clients: https://github.com/dmarket/dm-trading-tools
curl -G 'https://api.dmarket.com/marketplace-api/v1/user-offers/closed' \
  --data-urlencode 'Limit=10' \
  --data-urlencode 'OrderDir=desc' \
  --data-urlencode 'Status=successful' \
  -H "X-Api-Key: $DMARKET_PUBLIC_KEY" \
  -H "X-Sign-Date: $TIMESTAMP" \
  -H "X-Request-Sign: dmar ed25519 $SIGNATURE"

Response samples

Content type
application/json
{
  • "Trades": [
    ],
  • "Total": "string",
  • "Cursor": "string"
}

Inventory/items

User inventory, deposits and withdrawals.

List user inventory NEW

Get user inventory details. Both 3rd party (e.g. Steam) and DMarket inventories are merged into one list. Prices are returned as integer cents. 'gameId' param values are: CS2 - a8db, Team Fortress 2 - tf2, Dota 2 - 9a92, Rust - rust.

Authorizations:
(ApiKeySignDateRequestSign)
query Parameters
gameId
required
string
Enum: "a8db" "9a92" "tf2" "rust"

Game identifier. One of: a8db (CS2), 9a92 (Dota 2), tf2, rust.

title
string

Filter assets by title prefix (case-insensitive).

treeFilters
string

Attribute filters in comma-separated key=value format. Values must match how the attribute is stored (typically the lowercase Steam string; see allowed values below).

Supported common keys: tradable, inMarket, categoryPath, type. Filter by game and title via the top-level gameId and title query parameters.

CS2 keys: exterior, paintSeed, floatPart, phase, category, collection, charmName, charmExists, isProskin, fadePercentFrom, fadePercentTo.

TF2 keys: exterior, collection, isCraftable. Dota 2 keys: hero.

Allowed CS2 values:

  • exterior: factory new, minimal wear, field-tested, well-worn, battle-scarred, not painted
  • phase: phase-1, phase-2, phase-3, phase-4, ruby, sapphire, emerald, black-pearl
  • floatPart: FN-0..FN-6, MW-0..MW-4, FT-0..FT-4, WW-0..WW-4, BS-0..BS-4 (bucketed float ranges per exterior)
  • category: stattrak_tm (_tm is translated to the ™ symbol server-side), souvenir, normal, (knives)

Allowed TF2 exterior values: factory new, minimal wear, field-tested, well-worn, battle-scarred, battle scarred.

Multi-value: suffix key with [], e.g. exterior[]=factory new,exterior[]=minimal wear (URL-encode the space as %20).

Negation: prefix key with not_, e.g. not_exterior=factory new.

Ranges: fadePercentFrom=10,fadePercentTo=90.

Existence check: charmExists=true / charmExists=false.

Example: categoryPath=rifle,exterior[]=factory new,exterior[]=minimal wear.

orderBy
string
Enum: "price" "title" "float" "createdAt" "updatedAt"

Sort field. Supported values: price, title, float, createdAt, updatedAt.

orderDir
string
Enum: "asc" "desc"

Sort direction. Defaults to asc when orderBy is set.

limit
required
integer <int32> [ 1 .. 100 ]

Number of items to return per page. Range 1..100.

cursor
string <= 500 characters

Pagination cursor returned from a previous response.

Responses

Request samples

# Sign the request and set the three auth headers — reference clients: https://github.com/dmarket/dm-trading-tools
curl -G 'https://api.dmarket.com/marketplace-api/v2/user/inventory' \
  --data-urlencode 'gameId=a8db' \
  --data-urlencode 'title=AK-47' \
  --data-urlencode 'treeFilters=categoryPath=rifle,exterior[]=factory new' \
  --data-urlencode 'orderBy=price' \
  --data-urlencode 'orderDir=asc' \
  --data-urlencode 'limit=10' \
  -H "X-Api-Key: $DMARKET_PUBLIC_KEY" \
  -H "X-Sign-Date: $TIMESTAMP" \
  -H "X-Request-Sign: dmar ed25519 $SIGNATURE"

Response samples

Content type
application/json
{
  • "items": [
    ],
  • "total": "42",
  • "cursor": ""
}

Sync inventory with Steam

Updating DMarket inventory details to sync them with data from Steam.

Authorizations:
(ApiKeySignDateRequestSign)
Request Body schema: application/json
required
Type
string (marketplaceInventorySyncType)
Default: "UnknownSyncType"
Enum: "UnknownSyncType" "Inventory"
GameID
string (marketplaceGames)
Default: "UnknownGame"
Enum: "UnknownGame" "CSGO" "Dota2" "TF2" "LifeBeyond" "Rust"

Responses

Request samples

Content type
application/json
{
  • "Type": "Inventory",
  • "GameID": "CSGO"
}

Response samples

Content type
application/json
{ }

Withdraw assets

Withdraw assets. 'gameId' param values are: CS2 - a8db, Team Fortress 2 - tf2, Dota 2 - 9a92, Rust - rust

Authorizations:
(ApiKeySignDateRequestSign)
Request Body schema: application/json
required
required
Array of objects (entity.Asset)
requestId
required
string

Responses

Request samples

Content type
application/json
{
  • "assets": [
    ],
  • "requestId": "withdraw-001"
}

Response samples

Content type
application/json
{
  • "transferId": "string"
}

List low-fee items

Get the list of items with lower fees. The new list of items every day. 'gameId' param values are: CS2 - a8db, Team Fortress 2 - tf2, Dota 2 - 9a92, Rust - rust. 'offerType' param values are: 'dmarket', 'p2p'.

Authorizations:
(ApiKeySignDateRequestSign)
query Parameters
gameId
required
string

enums: CS2 - a8db, Team Fortress 2 - tf2, Dota 2 - 9a92, Rust - rust

offerType
string
Default: "dmarket"

enums: "dmarket", "p2p"

limit
integer
Default: 10

limit

offset
integer
Default: 0

offset

Responses

Request samples

# Sign the request and set the three auth headers — reference clients: https://github.com/dmarket/dm-trading-tools
curl -G 'https://api.dmarket.com/exchange/v1/customized-fees' \
  --data-urlencode 'gameId=a8db' \
  --data-urlencode 'offerType=dmarket' \
  --data-urlencode 'limit=20' \
  --data-urlencode 'offset=0' \
  -H "X-Api-Key: $DMARKET_PUBLIC_KEY" \
  -H "X-Sign-Date: $TIMESTAMP" \
  -H "X-Request-Sign: dmar ed25519 $SIGNATURE"

Response samples

Content type
application/json
{
  • "defaultFee": {
    },
  • "reducedFees": [
    ]
}

Aggregator

Aggregated market price data.

Get item sales history

Get the item sales history. Up to 12 last months.

Authorizations:
(ApiKeySignDateRequestSign)
query Parameters
gameId
required
string
title
required
string
filters
string

filters is a list of filters. For example: exterior[]=factory new,phase[]=phase-1,phase[]=phase-2,float[]=2,float[]=133.

txOperationType
Array of strings
Items Enum: "Offer" "Target"

tx_operation_type is a type of transaction to return. Values: "", "Target", "Offer".

limit
string <int64>

limit is a maximum number of sales to return. min: 1 max: 20

offset
string <int64>

Responses

Request samples

# Sign the request and set the three auth headers — reference clients: https://github.com/dmarket/dm-trading-tools
curl -G 'https://api.dmarket.com/trade-aggregator/v1/last-sales' \
  --data-urlencode 'gameId=a8db' \
  --data-urlencode 'title=AK-47 | Redline (Field-Tested)' \
  --data-urlencode 'limit=20' \
  -H "X-Api-Key: $DMARKET_PUBLIC_KEY" \
  -H "X-Sign-Date: $TIMESTAMP" \
  -H "X-Request-Sign: dmar ed25519 $SIGNATURE"

Response samples

Content type
application/json
{
  • "sales": [
    ]
}