{
  "openapi": "3.0.1",
  "info": {
    "title": "CS2 Skin Prices API: Skinport, DMarket, Steam & CSFloat",
    "description": "CS2 (CS:GO) skin prices from Skinport, DMarket, Waxpeer, Market.CSGO, LIS-SKINS, Steam and optionally CSFloat in one row per item: lowest asks, DMarket buy orders, listings, Skinport sales history, cross-venue spreads and the best flip after fees. No login or API key needed for six venues.",
    "version": "0.1",
    "x-build-id": "dBp2frPael7qV03gJ"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/varnmill~cs2-skin-prices/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-varnmill-cs2-skin-prices",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/acts/varnmill~cs2-skin-prices/runs": {
      "post": {
        "operationId": "runs-sync-varnmill-cs2-skin-prices",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor and returns information about the initiated run in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/runsResponseSchema"
                }
              }
            }
          }
        }
      }
    },
    "/acts/varnmill~cs2-skin-prices/run-sync": {
      "post": {
        "operationId": "run-sync-varnmill-cs2-skin-prices",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "inputSchema": {
        "type": "object",
        "required": [
          "mode"
        ],
        "properties": {
          "mode": {
            "title": "Mode",
            "enum": [
              "compare",
              "market",
              "gaps"
            ],
            "type": "string",
            "description": "compare: one row per item in 'Items', priced on every venue, with Skinport sales history and the best cross-venue flip. market: every CS2 item the venues list, filtered and sorted (default: most sold on Skinport in 7 days). gaps: same universe ranked by the best buy-here-sell-there profit after fees (defaults: price >= 1, sold >= 5 times on Skinport in 7 days, listed on >= 2 venues).",
            "default": "compare"
          },
          "items": {
            "title": "Items (market hash names)",
            "type": "array",
            "description": "Exact Steam market hash names, one per line, with the wear in brackets, e.g. AK-47 | Redline (Field-Tested). StatTrak™ and ★ prefixes must match Steam. Case is ignored and near-misses get 'didYouMean' suggestions.",
            "items": {
              "type": "string"
            }
          },
          "currency": {
            "title": "Currency",
            "enum": [
              "USD",
              "EUR",
              "GBP",
              "CAD",
              "AUD",
              "CHF",
              "PLN",
              "BRL",
              "NOK",
              "SEK",
              "DKK",
              "CZK",
              "TRY",
              "CNY"
            ],
            "type": "string",
            "description": "Skinport quotes this currency natively. The other venues quote USD and are converted with that day's ECB rate (Frankfurter API).",
            "default": "USD"
          },
          "venues": {
            "title": "Venues",
            "type": "array",
            "description": "Marketplaces to include. All of these work without an API key. CSFloat is added automatically when you enter a CSFloat API key below.",
            "items": {
              "type": "string",
              "enum": [
                "skinport",
                "dmarket",
                "waxpeer",
                "marketcsgo",
                "lisskins",
                "steam"
              ],
              "enumTitles": [
                "Skinport (prices, listings, sales history)",
                "DMarket (lowest ask, highest buy order)",
                "Waxpeer",
                "Market.CSGO",
                "LIS-SKINS",
                "Steam Community Market (lowest listing, via Waxpeer's Steam price feed)"
              ]
            },
            "default": [
              "skinport",
              "dmarket",
              "waxpeer",
              "marketcsgo",
              "lisskins",
              "steam"
            ]
          },
          "csfloatApiKey": {
            "title": "CSFloat API key (optional)",
            "type": "string",
            "description": "CSFloat's listings API needs a free key (csfloat.com > Profile > Developer). With a key, rows also get the CSFloat lowest buy-now price, the median of the 50 cheapest listings and the cheapest listing's float value."
          },
          "csfloatMaxItems": {
            "title": "CSFloat: max items to check",
            "minimum": 1,
            "maximum": 1000,
            "type": "integer",
            "description": "CSFloat needs one request per item, so it is only checked for the first N rows.",
            "default": 50
          },
          "includeSalesHistory": {
            "title": "Include Skinport sales history",
            "type": "boolean",
            "description": "Add Skinport completed-sale stats (min, max, avg, median, volume) for the last 24 hours, 7, 30 and 90 days.",
            "default": true
          },
          "includeTradeLocked": {
            "title": "Include trade-locked Skinport listings",
            "type": "boolean",
            "description": "Also report the lowest price and count of Skinport listings still under Steam's 7-day trade hold. They usually sell below tradable listings. All other prices are for tradable items.",
            "default": false
          },
          "search": {
            "title": "Name filter",
            "type": "array",
            "description": "Keep items whose name contains all words of any line (case-insensitive), e.g. 'case', 'karambit doppler', 'stattrak ak-47'. Empty keeps everything.",
            "items": {
              "type": "string"
            }
          },
          "minPrice": {
            "title": "Min price",
            "minimum": 0,
            "type": "number",
            "description": "Skip items whose reference price (median of the venues' lowest asks) is below this. Gaps mode uses 1 when empty."
          },
          "maxPrice": {
            "title": "Max price",
            "minimum": 0,
            "type": "number",
            "description": "Skip items whose reference price is above this."
          },
          "minVenues": {
            "title": "Min venues with a price",
            "minimum": 1,
            "maximum": 7,
            "type": "integer",
            "description": "Skip items listed on fewer venues. Gaps mode uses 2 when empty; market mode 1."
          },
          "minListings": {
            "title": "Min total listings",
            "minimum": 0,
            "type": "integer",
            "description": "Skip items with fewer listings summed across Skinport, Waxpeer, Market.CSGO and LIS-SKINS (and DMarket after enrichment)."
          },
          "minSales7d": {
            "title": "Min Skinport sales (7 days)",
            "minimum": 0,
            "type": "integer",
            "description": "Skip items sold fewer times on Skinport in the last 7 days, a liquidity check. Gaps mode uses 5 when empty."
          },
          "minProfitPercent": {
            "title": "Min flip profit % (gaps mode)",
            "type": "number",
            "description": "Only output items whose best flip or instant flip nets at least this percent after the selling venue's fee. Empty outputs the top items whatever the profit."
          },
          "sortBy": {
            "title": "Sort by",
            "enum": [
              "flip",
              "instantFlip",
              "spread",
              "sales7d",
              "sales30d",
              "listings",
              "price",
              "discount"
            ],
            "type": "string",
            "description": "Ranking for market and gaps modes. Empty: gaps sorts by flip profit, market by Skinport 7-day sales."
          },
          "maxItems": {
            "title": "Max items",
            "minimum": 1,
            "maximum": 30000,
            "type": "integer",
            "description": "Rows to output. Market mode default 100, gaps mode 50. In compare mode, only the first N items of your list are priced."
          },
          "sellerFeePercent": {
            "title": "Seller fees % (flip math)",
            "type": "object",
            "description": "Percent of the sale price each venue keeps when you sell, used for bestFlip and instantFlip. Defaults (October 2026): Skinport 8, Steam 13.04 (5% + 10% CS2 fee on top of the seller price), CSFloat 2, DMarket 5, Waxpeer 6, Market.CSGO 5, LIS-SKINS 5. Override any of them, e.g. {\"dmarket\": 3}."
          },
          "steamAsSellVenue": {
            "title": "Allow selling on Steam in flips",
            "type": "boolean",
            "description": "Steam pays sellers in Steam Wallet funds, which cannot be withdrawn, so by default Steam is only a buy venue in bestFlip. Turn on to also consider selling on Steam (useful if you want wallet funds).",
            "default": false
          },
          "maxPriceRatio": {
            "title": "Outlier guard (max price ratio)",
            "minimum": 1.1,
            "maximum": 100,
            "type": "number",
            "description": "A venue's lowest ask more than this many times (default 1.5) above or below the median of all venues is treated as a troll listing or stale feed and left out of lowestAsk, spread and flips (it still shows in that venue's own field and in outlierVenues). With only two venues this far apart, no flip is computed.",
            "default": 1.5
          },
          "minSellListings": {
            "title": "Min listings on the sell venue",
            "minimum": 0,
            "type": "integer",
            "description": "A venue only counts as the sell side of a flip if it has at least this many listings of the item, so one overpriced listing on a thin venue does not look like profit. Steam has no listing count and is never a sell venue unless you allow it above.",
            "default": 5
          },
          "proxyConfiguration": {
            "title": "Proxy",
            "type": "object",
            "description": "Requests go direct first. The proxy is only used to switch IP when a venue rate-limits (Skinport allows 8 requests per 5 minutes per IP). Datacenter proxy is enough.",
            "default": {
              "useApifyProxy": true
            }
          }
        }
      },
      "runsResponseSchema": {
        "type": "object",
        "properties": {
          "data": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string"
              },
              "actId": {
                "type": "string"
              },
              "userId": {
                "type": "string"
              },
              "startedAt": {
                "type": "string",
                "format": "date-time",
                "example": "2025-01-08T00:00:00.000Z"
              },
              "finishedAt": {
                "type": "string",
                "format": "date-time",
                "example": "2025-01-08T00:00:00.000Z"
              },
              "status": {
                "type": "string",
                "example": "READY"
              },
              "meta": {
                "type": "object",
                "properties": {
                  "origin": {
                    "type": "string",
                    "example": "API"
                  },
                  "userAgent": {
                    "type": "string"
                  }
                }
              },
              "stats": {
                "type": "object",
                "properties": {
                  "inputBodyLen": {
                    "type": "integer",
                    "example": 2000
                  },
                  "rebootCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "restartCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "resurrectCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "computeUnits": {
                    "type": "integer",
                    "example": 0
                  }
                }
              },
              "options": {
                "type": "object",
                "properties": {
                  "build": {
                    "type": "string",
                    "example": "latest"
                  },
                  "timeoutSecs": {
                    "type": "integer",
                    "example": 300
                  },
                  "memoryMbytes": {
                    "type": "integer",
                    "example": 1024
                  },
                  "diskMbytes": {
                    "type": "integer",
                    "example": 2048
                  }
                }
              },
              "buildId": {
                "type": "string"
              },
              "defaultKeyValueStoreId": {
                "type": "string"
              },
              "defaultDatasetId": {
                "type": "string"
              },
              "defaultRequestQueueId": {
                "type": "string"
              },
              "buildNumber": {
                "type": "string",
                "example": "1.0.0"
              },
              "containerUrl": {
                "type": "string"
              },
              "usage": {
                "type": "object",
                "properties": {
                  "ACTOR_COMPUTE_UNITS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_WRITES": {
                    "type": "integer",
                    "example": 1
                  },
                  "KEY_VALUE_STORE_LISTS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_INTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_EXTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_SERPS": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              },
              "usageTotalUsd": {
                "type": "number",
                "example": 0.00005
              },
              "usageUsd": {
                "type": "object",
                "properties": {
                  "ACTOR_COMPUTE_UNITS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_WRITES": {
                    "type": "number",
                    "example": 0.00005
                  },
                  "KEY_VALUE_STORE_LISTS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_INTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_EXTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_SERPS": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}