DMarket trading API (v1.1.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 SHA256 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 NACL https://en.wikipedia.org/wiki/NaCl_(software) using you secret key.

  3. Encode the result string with hex

  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

Get user profile

Getting general user profile information.

Responses

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).

Responses

Response samples

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

Sell Items

Deposit assets

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

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.

path Parameters
DepositID
required
string

Deposit operation unique identifier.

Responses

Response samples

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

List user offers

Get the list of offers of the current user for further management (remove from sale/change price, etc.). The price amount format is in USD i.e. 0.5 is 50 cents. 'gameId' param values are: CS:GO - a8db, Team Fortress 2 - tf2, Dota 2 - 9a92, Rust - rust.

query Parameters
GameID
string

Game identifier on market.

Status
string
Default: "OfferStatusDefault"
Enum: "OfferStatusDefault" "OfferStatusActive" "OfferStatusSold" "OfferStatusInactive" "OfferStatusIn_transfer"

On sale offer current status.

SortType
string
Default: "UserOffersSortTypeDefault"
Enum: "UserOffersSortTypeDefault" "UserOffersSortTypeDateNewestFirst"

Sort user offers by one of predefined sort types.

  • UserOffersSortTypeDefault: Default sort type for user offers.
  • UserOffersSortTypeDateNewestFirst: Sort user offers by date showing newest first.
BasicFilters.PriceFrom
number <float>

Price range filtering.

BasicFilters.PriceTo
number <float>

Price range filtering.

BasicFilters.Currency
string

Currency code to use with price range filter.

Offset
string <uint64>

Offsets items in response.

Limit
string <uint64>

Limits number or returned items in response.

Cursor
string

Cursor is a next page identifier.

Responses

Response samples

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

Create offers

Batch offers creation. As a result, the selected asset is locked and the newly-created offer appears in the Market and on Sale tabs. The price amount format is in USD, i.e. 0.5 is 50 cents.

Request Body schema: application/json
required
Array of objects (marketplaceCreateOfferRequest)

List of offers to create.

Responses

Request samples

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

Response samples

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

Update offer prices

Change the sale price for existing offers. The price amount format is in USD, i.e. 0.5 is 50 cents.

Request Body schema: application/json
required
Array of objects (marketplaceEditOfferRequest)

List of offers to edit.

Responses

Request samples

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

Response samples

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

List market items

Get the list of items that are available for purchase on DMarket. The response format is in coins (cents for USD). 'gameId' param values are: CS:GO - a8db, Team Fortress 2 - tf2, Dota 2 - 9a92, Rust - rust.

query Parameters
gameId
required
string

gameId

title
string

title

limit
integer
Default: 50

limit

offset
integer
Default: 0

offset

orderBy
string
Default: "title"

orderBy

orderDir
string
Default: "desc"

orderDir

treeFilters
string

treeFilters

currency
required
string

currency

priceFrom
integer
Default: 0

priceFrom

priceTo
integer
Default: 0

priceTo

types
string

comma separated offer types to filter

cursor
string

next page identifier

Responses

Response samples

Content type
application/json
{
  • "cursor": "string",
  • "objects": [
    ],
  • "total": null
}

Remove offers from sale

Remove offers from sale. Once an offer is removed, the corresponding item is unlocked and appears in the user's inventory. The offer is also removed from the market. The price amount format is in USD, i.e. 0.5 is 50 cents.

Request Body schema: application/json
required
force
required
boolean
required
Array of objects (entity.ManagingOffer)

Responses

Request samples

Content type
application/json
{
  • "force": true,
  • "objects": [
    ]
}

Response samples

Content type
application/json
{
  • "created": [
    ],
  • "fail": [
    ],
  • "locked": [
    ],
  • "success": [
    ]
}

Inventory/items

List user inventory

Get user inventory details. Both 3rd party (e.g. Steam) and DMarket inventories are merged into one list. The price amount format is in USD i.e. 0.5 is 50 cents. 'gameId' param values are: CS:GO - a8db, Team Fortress 2 - tf2, Dota 2 - 9a92, Rust - rust.

query Parameters
GameID
string

Game identifier on market.

BasicFilters.Title
string

Filter assets in inventory by asset's title.

BasicFilters.InMarket
boolean <boolean>

Show only deposited on market assets.

BasicFilters.HasSteamLock
boolean <boolean>

Filter assets only with Steam trade-lock. Can be applied only for Steam-based games.

BasicFilters.SteamLockDays
integer <int64>

Filter assets only with Steam trade-lock lock not more than specified number of days. Can be applied only for Steam-based games.

BasicFilters.AssetID
Array of strings

Filter inventory by specified asset ID list.

SortType
string
Default: "UserInventorySortTypeDefault"
Value: "UserInventorySortTypeDefault"

Sort inventory by one of predefined sort types.

  • UserInventorySortTypeDefault: Default sort type for user inventory.
Presentation
string
Default: "InventoryPresentationSimple"
Enum: "InventoryPresentationSimple" "InventoryPresentationDetailed"

Inventory asset presentation type.

Offset
string <uint64>

Offsets items in response.

Limit
string <uint64>

Limits number or returned items in response.

Cursor
string

Cursor is a next page identifier.

Responses

Response samples

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

Sync inventory with Steam

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

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": "UnknownSyncType",
  • "GameID": "UnknownGame"
}

Response samples

Content type
application/json
{ }

Withdraw assets

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

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

Responses

Request samples

Content type
application/json
{
  • "assets": [
    ],
  • "requestId": "string"
}

Response samples

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

List user items by game

Getting user inventory details filtered by a certain game, including DMarket-stored and Steam-stored items. Items for sale are not included. gameId param values are: CS:GO - a8db, Team Fortress 2 - tf2, Dota 2 - 9a92, Rust - rust

query Parameters
gameId
required
string

gameId

title
string

title

limit
integer
Default: 50

limit

offset
integer
Default: 0

offset

orderBy
string
Default: "title"

orderBy

orderDir
string
Default: "desc"

orderDir

treeFilters
string

treeFilters

currency
required
string

currency

priceFrom
integer
Default: 0

priceFrom

priceTo
integer
Default: 0

priceTo

classIds
string

classIds

cursor
string

next page identifier

Responses

Response samples

Content type
application/json
{
  • "cursor": "string",
  • "objects": [
    ],
  • "total": null
}

List low-fee items

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

query Parameters
gameId
required
string

enums: CS:GO - 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

Response samples

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

Sold user items

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.

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

Response samples

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

Buy items

List offers by title

Get the list of all offers for a single item title. The price amount format is in USD, i.e. 0.5 is 50 cents.

query Parameters
Title
required
string

Item name on market.

Limit
number
Default: 100

Limit.

Cursor
string

Cursor is next page identifier.

Responses

Response samples

Content type
application/json
{
  • "objects": [
    ],
  • "total": null,
  • "cursor": "string"
}

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).

path Parameters
game_id
required
string
title
required
string

Responses

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.
Request Body schema: application/json
required
cursor
string
limit
string <int64>
object (ListAggregatedPricesRequestFilter)

Responses

Request samples

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

Response samples

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

List user targets

Get the list of user's targets. 'gameId' param values are: CS:GO - a8db, Team Fortress 2 - tf2, Dota 2 - 9a92, Rust - rust. The price amount format is in USD, i.e. 0.5 is 50 cents.

query Parameters
GameID
string

Game identifier on market.

BasicFilters.PriceFrom
number <float>

Price range filtering.

BasicFilters.PriceTo
number <float>

Price range filtering.

BasicFilters.Currency
string

Currency code to use with price range filter.

BasicFilters.Title
string

Filter user targets by asset's title.

BasicFilters.TargetID
string

Filter by unique target identifier.

BasicFilters.Status
string
Default: "TargetStatusInactive"
Enum: "TargetStatusInactive" "TargetStatusActive"

Target current status.

  • TargetStatusInactive: Target currently inactive.
  • TargetStatusActive: Target currently active and can be matched with complaint offers.
SortType
string
Default: "UserTargetsSortTypeDefault"
Value: "UserTargetsSortTypeDefault"

Sort user targets by one of predefined sort types.

  • UserTargetsSortTypeDefault: Default sort type for user targets.
Offset
string <uint64>

Offsets items in response.

Limit
string <uint64>

Limits number or returned items in response.

Cursor
string

Cursor is next page identifier.

Responses

Response samples

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

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.

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

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: CS:GO - 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.

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": "string",
  • "Targets": [
    ]
}

Response samples

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

Remove targets

Remove targets.

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": [
    ]
}

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).

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"
}

Aggregator

Get item sales history

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

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 arrays

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

Response samples

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