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:
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)
X-Sign-Date: timestamp or current time Example: 1605619994. Must not be older than 2 minutes from the request time.
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:
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)
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.
Hex-encode the 64-byte Ed25519 signature
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.
Getting general user profile information.
# 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"
{- "agreementsInfo": {
- "isConfirmed": true,
- "updated": 0
}, - "countryCode": "string",
- "countryCodeFromIP": "string",
- "email": "string",
- "features": [
- {
- "enabled": true,
- "name": "P2P"
}
], - "ga_client_id": "string",
- "hasActiveSubscriptions": true,
- "hasHistoryEvents": true,
- "id": "string",
- "imageUrl": "string",
- "isEmailVerified": true,
- "isPasswordSet": true,
- "level": 0,
- "linkedGames": [
- {
- "gameId": "string",
- "gameUserId": "string",
- "username": "string"
}
], - "migrated": true,
- "publicKey": "string",
- "regType": "steam",
- "restrictions": [
- {
- "expirationTime": 0,
- "name": "P2POfferCreation"
}
], - "settings": {
- "enabledDeviceConfirmation": true,
- "isSubscribedToNewsletters": true,
- "targetsLimit": 0,
- "tradingApiToken": "string"
}, - "steamAccount": {
- "apiKey": "string",
- "apiKeyStatus": "New",
- "icon": "string",
- "isProfilePrivate": true,
- "level": 0,
- "steamId": "string",
- "tradeUrl": "string",
- "username": "string"
}, - "twitchAccount": {
- "icon": "string",
- "userId": "string",
- "username": "string"
}, - "username": "string"
}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).
# 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"
{- "dmc": "string",
- "dmcAvailableToWithdraw": "string",
- "usd": "string",
- "usdAvailableToWithdraw": "string"
}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:
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).
| game_id required | string |
| title required | string |
# 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"
{- "orders": [
- {
- "amount": "2",
- "price": "155000",
- "title": "★ Karambit | Doppler (Factory New)",
- "attributes": {
- "floatPartValue": "any",
- "paintSeed": "any",
- "phase": "phase-2"
}
}, - {
- "amount": "1",
- "price": "148000",
- "title": "★ Karambit | Doppler (Factory New)",
- "attributes": {
- "floatPartValue": "FN-0",
- "paintSeed": "any",
- "phase": "any"
}
}
]
}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:
Response:
| cursor | string |
| limit | string <int64> |
object (ListAggregatedPricesRequestFilter) |
{- "filter": {
- "game": "a8db",
- "titles": [
- "AK-47 | Redline (Field-Tested)"
]
}, - "limit": "100"
}{- "aggregatedPrices": [
- {
- "title": "string",
- "orderBestPrice": {
- "Currency": "string",
- "Amount": "string"
}, - "orderCount": "string",
- "offerBestPrice": {
- "Currency": "string",
- "Amount": "string"
}, - "offerCount": "string"
}
], - "nextCursor": "string"
}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.
| 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: CS2 keys: Allowed CS2 values:
Multi-value: suffix key with Negation: prefix key with Example: |
| 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: |
| orderDir | string Enum: "asc" "desc" Sort direction. Defaults to |
| 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. |
# 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"
{- "items": [
- {
- "targetId": "9b1f8a2c-3d4e-4f5a-8b6c-7d8e9f0a1b2c",
- "title": "★ Karambit | Doppler (Factory New)",
- "amount": "1",
- "status": "TARGET_STATUS_ACTIVE",
- "priceCents": "155000",
- "attributes": {
- "categoryPath": "knife/karambit",
- "title": "★ Karambit | Doppler (Factory New)",
- "name": "★ Karambit | Doppler",
- "cs2": {
- "category": "CATEGORY_NORMAL",
- "exterior": "EXTERIOR_FACTORY_NEW",
- "phase": "PHASE_TITLE_PHASE_2",
- "paintSeed": 0,
- "floatPart": "FLOAT_PART_UNSPECIFIED",
- "isAdvanced": true
}
}, - "createdAt": "2026-07-01T12:00:00Z",
- "updatedAt": "2026-07-01T12:00:00Z"
}
], - "total": "3",
- "cursor": ""
}Get the list of the user’s closed targets. The price amount format is in USD, i.e. 0.5 is 50 cents.
| 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" |
# 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"
{- "Trades": [
- {
- "OfferID": "string",
- "TargetID": "string",
- "AssetID": "string",
- "Price": {
- "Currency": "string",
- "Amount": 0.1
}, - "CurrencyCode": "string",
- "Amount": "string",
- "Title": "string",
- "ClosedAt": "string",
- "Status": "successful",
- "FinalizationTime": "string"
}
], - "Total": "string",
- "Cursor": "string"
}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.
| GameID | string GameID of same assets in one single target entity. |
Array of objects (marketplaceCreateTargetRequest) List of targets to create. |
{- "GameID": "a8db",
- "Targets": [
- {
- "Amount": "1",
- "Price": {
- "Currency": "USD",
- "Amount": 10.5
}, - "Title": "AK-47 | Redline (Field-Tested)",
- "Attrs": {
- "floatPartValue": "FT-0"
}
}
]
}{- "Result": [
- {
- "CreateTarget": {
- "Amount": "string",
- "Price": {
- "Currency": "string",
- "Amount": 0.1
}, - "Title": "string",
- "Attrs": {
- "paintSeed": 0,
- "phase": "",
- "floatPartValue": ""
}
}, - "TargetID": "string",
- "Successful": true,
- "Error": {
- "Code": "Internal",
- "Message": "string"
}
}
]
}Remove targets.
Array of objects (marketplaceDeleteTargetRequest) Targets list to delete. |
{- "Targets": [
- {
- "TargetID": "d4e5f6a7-b8c9-0123-def0-456789012345"
}
]
}{- "Result": [
- {
- "DeleteTarget": {
- "TargetID": "string"
}, - "Successful": true,
- "Error": {
- "Code": "Internal",
- "Message": "string"
}
}
]
}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.
| 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: CS2 keys: TF2 keys: Allowed CS2 values:
Allowed TF2 exterior values: Multi-value: suffix key with Negation: prefix key with Ranges: Existence check: Charm and sticker filters ( Example: |
| 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:
|
| orderDir | string Enum: "asc" "desc" Sort direction. Defaults to |
| 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. |
# 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"
{- "items": [
- {
- "attributes": {
- "backgroundColor": "42413e",
- "botId": "76561199000000001",
- "categoryPath": "rifle/ak-47",
- "classId": "3669724953",
- "depositLocked": false,
- "description": "",
- "cs2": {
- "category": "CATEGORY_NORMAL",
- "collection": "the huntsman collection",
- "family": "redline",
- "exterior": "EXTERIOR_FIELD_TESTED",
- "float": "0.2356003224849701",
- "inspectInGameUri": "steam://run/730//+csgo_econ_action_preview%20S76561199000000001A40000000000D4649654965123456789",
- "itemType": "rifle",
- "phase": "",
- "phaseTitle": "PHASE_TITLE_UNSPECIFIED",
- "quality": "QUALITY_CLASSIFIED",
- "rareInfo": "",
- "paintIndex": 282,
- "paintSeed": 412,
- "stickers": [
- {
- "id": 812,
- "name": "Sticker | Natus Vincere | Katowice 2019",
- "slot": 0,
- "wear": "0",
- "scale": "1",
- "rotation": "0",
- "tintId": 0,
- "collection": "katowice 2019",
- "rarity": "high grade",
- "colors": [
- "COLOR_YELLOW",
- "COLOR_BLACK"
], - "team": "Natus Vincere",
- "player": "",
- "offsetX": 0,
- "offsetY": 0,
- "offsetZ": 0,
- "pattern": 0
}
], - "fadePercent": "0",
- "rarePattern": "RARE_PATTERN_UNSPECIFIED",
- "colors": [
- "COLOR_RED",
- "COLOR_BLACK"
], - "floatPart": "FLOAT_PART_FT_2",
- "charms": [ ],
- "charmPattern": 0,
- "defIndex": 7,
- "customName": "",
- "killEaterScoreType": 0,
- "killEaterValue": 0,
- "isProskin": false,
- "proskin": {
- "proPlayerOwned": false,
- "hasHighlights": false,
- "proPlayerNickname": ""
}, - "inspectInGameTemplateUri": ""
}, - "gameId": "a8db",
- "gameType": "steam",
- "inGameAssetId": "8590574520:3669724953:40000000000:730",
- "itemSlug": "ak-47-redline",
- "name": "AK-47 | Redline",
- "nameColor": "d2d2d2",
- "owner": "5f8a1c3e-9b2d-4e6f-8a1b-2c3d4e5f6a7b",
- "productId": "a8db:0e2f6f4f7b9c4d2a8e1f3a5c7e9b1d3f",
- "provider": "CPU",
- "slug": "ak-47-redline",
- "steamAssetId": "40000000000",
- "title": "AK-47 | Redline (Field-Tested)",
- "tradable": true,
- "tradeLockDays": 0,
- "tradeLockDuration": null,
- "unlockDate": "2026-06-10T18:00:00Z",
- "type": "rifle",
- "viewAtSteamUri": "https://steamcommunity.com/profiles/76561199000000001/inventory/#730_2_40000000000",
- "withdrawable": true,
- "id": "3d9c9c6a-4f2e-4b83-a1c7-90ab12cd34ef",
- "overstocked": false,
- "status": "default",
- "saleRestricted": false,
- "withdrawalState8": false,
- "settlementTime": "2026-06-10T18:00:00Z",
- "sellUnavailable": false,
- "depositor": "5f8a1c3e-9b2d-4e6f-8a1b-2c3d4e5f6a7b",
- "withdrawOnlyEndTime": null,
- "tradeProtectionRemoved": true,
- "revertPendingUntil": null
}, - "priceCents": "1599",
- "createdAt": "2026-06-17T10:30:00Z",
- "locked": false,
- "offerId": "f7c1b8e2-9a3d-4e6f-bb12-3a5c9d0e1f23",
- "discountPercent": 12.5
}
], - "total": "128",
- "cursor": "eyJvZmZzZXQiOjEwfQ=="
}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).
required | Array of objects (entity.OfferPrice) |
{- "offers": [
- {
- "offerId": "c3d4e5f6-a7b8-9012-cdef-345678901234",
- "price": {
- "amount": "4999",
- "currency": "USD"
}, - "type": "dmarket"
}
]
}{- "dmOffersFailReason": {
- "code": "string"
}, - "dmOffersStatus": {
- "property1": {
- "started": true
}, - "property2": {
- "started": true
}
}, - "orderId": "string",
- "p2pOffersStatus": {
- "property1": {
- "started": true
}, - "property2": {
- "started": true
}
}, - "status": "TxPending",
- "txId": "string"
}Transferring items from a 3rd party inventory (e.g. a Steam game) to a Dmarket inventory.
| AssetID | Array of strings List of asset id to deposit. |
{- "AssetID": [
- "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
- "b2c3d4e5-f6a7-8901-bcde-f23456789012"
]
}{- "DepositID": "string"
}Get information about current deposit transfers.
| DepositID required | string Deposit operation unique identifier. |
# 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"
{- "DepositID": "string",
- "AssetID": [
- "string"
], - "Status": "TransferStatusPending",
- "Error": "string",
- "Assets": [
- {
- "InGameAssetID": "string",
- "DmarketAssetID": "string"
}
], - "SteamDepositInfo": {
- "TradeOfferID": "string",
- "Message": "string"
}
}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.
| 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: CS2 keys: TF2 keys: Allowed CS2 values:
Allowed TF2 exterior values: Multi-value: suffix key with Negation: prefix key with Ranges: Existence check: Charm and sticker filters ( Example: |
| orderBy | string Enum: "price" "title" "float" "createdAt" Sort field. Supported values: |
| orderDir | string Enum: "asc" "desc" Sort direction. Defaults to |
| 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. |
# 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"
{- "items": [
- {
- "attributes": {
- "backgroundColor": "42413e",
- "botId": "76561199000000001",
- "categoryPath": "rifle/ak-47",
- "classId": "3669724953",
- "depositLocked": false,
- "description": "",
- "cs2": {
- "category": "CATEGORY_NORMAL",
- "collection": "the huntsman collection",
- "family": "redline",
- "exterior": "EXTERIOR_FIELD_TESTED",
- "float": "0.2356003224849701",
- "inspectInGameUri": "steam://run/730//+csgo_econ_action_preview%20S76561199000000001A40000000000D4649654965123456789",
- "itemType": "rifle",
- "phase": "",
- "phaseTitle": "PHASE_TITLE_UNSPECIFIED",
- "quality": "QUALITY_CLASSIFIED",
- "rareInfo": "",
- "paintIndex": 282,
- "paintSeed": 412,
- "stickers": [
- {
- "id": 812,
- "name": "Sticker | Natus Vincere | Katowice 2019",
- "slot": 0,
- "wear": "0",
- "scale": "1",
- "rotation": "0",
- "tintId": 0,
- "collection": "katowice 2019",
- "rarity": "high grade",
- "colors": [
- "COLOR_YELLOW",
- "COLOR_BLACK"
], - "team": "Natus Vincere",
- "player": "",
- "offsetX": 0,
- "offsetY": 0,
- "offsetZ": 0,
- "pattern": 0
}
], - "fadePercent": "0",
- "rarePattern": "RARE_PATTERN_UNSPECIFIED",
- "colors": [
- "COLOR_RED",
- "COLOR_BLACK"
], - "floatPart": "FLOAT_PART_FT_2",
- "charms": [ ],
- "charmPattern": 0,
- "defIndex": 7,
- "customName": "",
- "killEaterScoreType": 0,
- "killEaterValue": 0,
- "isProskin": false,
- "proskin": {
- "proPlayerOwned": false,
- "hasHighlights": false,
- "proPlayerNickname": ""
}, - "inspectInGameTemplateUri": ""
}, - "gameId": "a8db",
- "gameType": "steam",
- "inGameAssetId": "8590574520:3669724953:40000000000:730",
- "itemSlug": "ak-47-redline",
- "name": "AK-47 | Redline",
- "nameColor": "d2d2d2",
- "owner": "5f8a1c3e-9b2d-4e6f-8a1b-2c3d4e5f6a7b",
- "productId": "a8db:0e2f6f4f7b9c4d2a8e1f3a5c7e9b1d3f",
- "provider": "CPU",
- "slug": "ak-47-redline",
- "steamAssetId": "40000000000",
- "title": "AK-47 | Redline (Field-Tested)",
- "tradable": true,
- "tradeLockDays": 0,
- "tradeLockDuration": null,
- "unlockDate": "2026-06-10T18:00:00Z",
- "type": "rifle",
- "viewAtSteamUri": "https://steamcommunity.com/profiles/76561199000000001/inventory/#730_2_40000000000",
- "withdrawable": true,
- "id": "3d9c9c6a-4f2e-4b83-a1c7-90ab12cd34ef",
- "overstocked": false,
- "status": "default",
- "saleRestricted": false,
- "withdrawalState8": false,
- "settlementTime": "2026-06-10T18:00:00Z",
- "sellUnavailable": false,
- "depositor": "5f8a1c3e-9b2d-4e6f-8a1b-2c3d4e5f6a7b",
- "withdrawOnlyEndTime": null,
- "tradeProtectionRemoved": true,
- "revertPendingUntil": null
}, - "priceCents": "1599",
- "createdAt": "2026-06-17T10:30:00Z",
- "locked": false,
- "offerId": "c3d4e5f6-1234-4abc-9def-7890abcdef12",
- "discountPercent": 0
}
], - "total": "7",
- "cursor": ""
}Create multiple offers in a single request.
Array of objects (marketplacev2CreateOfferRequest) |
{- "requests": [
- {
- "assetId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
- "priceCents": "1599"
}
]
}{- "offers": [
- {
- "id": "string",
- "assetId": "string"
}
], - "failed": [
- {
- "assetId": "string",
- "code": "string",
- "message": "string"
}
]
}Update multiple offers in a single request.
Array of objects (marketplacev2UpdateOfferRequest) |
{- "requests": [
- {
- "offerId": "c3d4e5f6-a7b8-9012-cdef-345678901234",
- "priceCents": "1799"
}
]
}{- "offers": [
- {
- "id": "string",
- "assetId": "string"
}
], - "failed": [
- {
- "offerId": "string",
- "code": "string",
- "message": "string"
}
]
}Delete multiple offers in a single request.
Array of objects (marketplacev2DeleteOfferRequest) |
{- "requests": [
- {
- "offerId": "c3d4e5f6-a7b8-9012-cdef-345678901234"
}
]
}{- "offers": [
- {
- "id": "string",
- "assetId": "string"
}
], - "failed": [
- {
- "offerId": "string",
- "code": "string",
- "message": "string"
}
]
}Get the list of the user’s closed sell offers. The price amount format is in USD, i.e. 0.5 is 50 cents.
| 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" |
# 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"
{- "Trades": [
- {
- "OfferID": "string",
- "TargetID": "string",
- "AssetID": "string",
- "Price": {
- "Currency": "string",
- "Amount": 0.1
}, - "CurrencyCode": "string",
- "Amount": "string",
- "Title": "string",
- "Fee": {
- "Amount": {
- "Currency": "string",
- "Amount": 0.1
}, - "Percent": "string",
- "IsPersonal": true
}, - "OfferCreatedAt": "string",
- "OfferClosedAt": "string",
- "Status": "successful",
- "FinalizationTime": "string"
}
], - "Total": "string",
- "Cursor": "string"
}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.
| 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: CS2 keys: TF2 keys: Allowed CS2 values:
Allowed TF2 exterior values: Multi-value: suffix key with Negation: prefix key with Ranges: Existence check: Example: |
| orderBy | string Enum: "price" "title" "float" "createdAt" "updatedAt" Sort field. Supported values: |
| orderDir | string Enum: "asc" "desc" Sort direction. Defaults to |
| 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. |
# 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"
{- "items": [
- {
- "attributes": {
- "backgroundColor": "42413e",
- "botId": "76561199000000001",
- "categoryPath": "rifle/ak-47",
- "classId": "3669724953",
- "depositLocked": false,
- "description": "",
- "cs2": {
- "category": "CATEGORY_NORMAL",
- "collection": "the huntsman collection",
- "family": "redline",
- "exterior": "EXTERIOR_FIELD_TESTED",
- "float": "0.2356003224849701",
- "inspectInGameUri": "steam://run/730//+csgo_econ_action_preview%20S76561199000000001A40000000000D4649654965123456789",
- "itemType": "rifle",
- "phase": "",
- "phaseTitle": "PHASE_TITLE_UNSPECIFIED",
- "quality": "QUALITY_CLASSIFIED",
- "rareInfo": "",
- "paintIndex": 282,
- "paintSeed": 412,
- "stickers": [
- {
- "id": 812,
- "name": "Sticker | Natus Vincere | Katowice 2019",
- "slot": 0,
- "wear": "0",
- "scale": "1",
- "rotation": "0",
- "tintId": 0,
- "collection": "katowice 2019",
- "rarity": "high grade",
- "colors": [
- "COLOR_YELLOW",
- "COLOR_BLACK"
], - "team": "Natus Vincere",
- "player": "",
- "offsetX": 0,
- "offsetY": 0,
- "offsetZ": 0,
- "pattern": 0
}
], - "fadePercent": "0",
- "rarePattern": "RARE_PATTERN_UNSPECIFIED",
- "colors": [
- "COLOR_RED",
- "COLOR_BLACK"
], - "floatPart": "FLOAT_PART_FT_2",
- "charms": [ ],
- "charmPattern": 0,
- "defIndex": 7,
- "customName": "",
- "killEaterScoreType": 0,
- "killEaterValue": 0,
- "isProskin": false,
- "proskin": {
- "proPlayerOwned": false,
- "hasHighlights": false,
- "proPlayerNickname": ""
}, - "inspectInGameTemplateUri": ""
}, - "gameId": "a8db",
- "gameType": "steam",
- "inGameAssetId": "8590574520:3669724953:40000000000:730",
- "itemSlug": "ak-47-redline",
- "name": "AK-47 | Redline",
- "nameColor": "d2d2d2",
- "owner": "5f8a1c3e-9b2d-4e6f-8a1b-2c3d4e5f6a7b",
- "productId": "a8db:0e2f6f4f7b9c4d2a8e1f3a5c7e9b1d3f",
- "provider": "CPU",
- "slug": "ak-47-redline",
- "steamAssetId": "40000000000",
- "title": "AK-47 | Redline (Field-Tested)",
- "tradable": true,
- "tradeLockDays": 0,
- "tradeLockDuration": null,
- "unlockDate": "2026-06-10T18:00:00Z",
- "type": "rifle",
- "viewAtSteamUri": "https://steamcommunity.com/profiles/76561199000000001/inventory/#730_2_40000000000",
- "withdrawable": true,
- "id": "3d9c9c6a-4f2e-4b83-a1c7-90ab12cd34ef",
- "overstocked": false,
- "status": "default",
- "saleRestricted": false,
- "withdrawalState8": false,
- "settlementTime": "2026-06-10T18:00:00Z",
- "sellUnavailable": false,
- "depositor": "5f8a1c3e-9b2d-4e6f-8a1b-2c3d4e5f6a7b",
- "withdrawOnlyEndTime": null,
- "tradeProtectionRemoved": true,
- "revertPendingUntil": null
}, - "suggestedPrice": {
- "currency": "USD",
- "amount": "15.99"
}, - "offerRecommendedPrice": {
- "currency": "USD",
- "amount": "15.49"
}, - "createdAt": "2026-06-17T10:30:00Z",
- "updatedAt": "2026-07-01T08:12:45Z",
- "inMarket": true
}
], - "total": "42",
- "cursor": ""
}Updating DMarket inventory details to sync them with data from Steam.
| Type | string (marketplaceInventorySyncType) Default: "UnknownSyncType" Enum: "UnknownSyncType" "Inventory" |
| GameID | string (marketplaceGames) Default: "UnknownGame" Enum: "UnknownGame" "CSGO" "Dota2" "TF2" "LifeBeyond" "Rust" |
{- "Type": "Inventory",
- "GameID": "CSGO"
}{ }Withdraw assets. 'gameId' param values are: CS2 - a8db, Team Fortress 2 - tf2, Dota 2 - 9a92, Rust - rust
required | Array of objects (entity.Asset) |
| requestId required | string |
{- "assets": [
- {
- "id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
- "gameId": "a8db",
- "classId": "c7e8f9a0-1234-5678-9abc-def012345678"
}
], - "requestId": "withdraw-001"
}{- "transferId": "string"
}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'.
| 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 |
# 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"
{- "defaultFee": {
- "fraction": "string",
- "minAmount": 0
}, - "reducedFees": [
- {
- "expiresAt": 0,
- "fraction": "string",
- "maxPrice": 0,
- "minPrice": 0,
- "title": "string"
}
]
}Get the item sales history. Up to 12 last months.
| 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> |
# 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"
{- "sales": [
- {
- "price": "1550.00",
- "date": "1784219849",
- "txOperationType": "Offer",
- "offerAttributes": {
- "floatValue": 0.03300321847200394,
- "paintSeed": 672,
- "rareInfo": "phase",
- "phaseTitle": "emerald",
- "stickers": null,
- "charms": null,
- "charmPattern": null
}, - "orderAttributes": { }
}, - {
- "price": "15.99",
- "date": "1784133449",
- "txOperationType": "Target",
- "offerAttributes": {
- "floatValue": 0.29052016139030457,
- "paintSeed": 89,
- "rareInfo": null,
- "phaseTitle": null,
- "stickers": [
- {
- "name": "Virtus.Pro (Gold) | Atlanta 2017",
- "rarity": "Gold"
}
], - "charms": null,
- "charmPattern": null
}, - "orderAttributes": {
- "isAdvanced": true,
- "rareInfo": null
}
}
]
}