API Documentation

Welcome to Steamlytics:CSGO's API page. Here you will be able to read the documentation for available APIs.

Why is Steamlytics:CSGO's data more useful than other sources? Instead of giving you numbers taken from unsold items (e.g. data from Steam Community Market's /priceoverview/) or community suggestions without satisfactory proof (both of which may be manipulated), you can be fully confident that the pricing data for an item is accurate and reliable due to the fact that it has actually been sold at the recorded prices. Sales with item prices too high for the Steam Community Market (i.e. high-tier items) are also recorded from other sources.

Steamlytics:CSGO's pricelist API (v2/pricelist) is the best pricing API for CS:GO items, with its anti-price manipulation tools, extensive sales data and price history, and more great features. With it, you can always be sure that your prices are accurate without needing to do any analysis yourself.

I started tracking sales at the beginning of December 2015. If an item is not found when making an API request, there has likely not been a recorded sale yet. If you have proof of a sale for a missing item, get in touch and it will be added to the database.

Your API Key
To use any of these API services, you need to have an API key.

To get an API key, you need to sign in via Steam first.

Upgrade API Plan

Storing millions of records and making database queries on those records is not cheap for me. I've done what optimizations I've can, but even so the free API plan is limited to 500 calls per day and 10 calls per minute. If you need more than that, consider upgrading to a higher-tier plan (not all payment methods implemented yet).

Monthly Pricing Calls Per Day Calls Per Minute
Free $0 500 10
Developer $5 5000 100
Pro $10 20,000 500
Enterprise $50 100,000 1000
Unlimited $250 Unlimited 1000

Get in touch if you need more than 100,000 calls per day.

Terms of Use

In addition to the TOS, each page or service (e.g. bot) that uses the Steamlytics:CSGO API must contain a link to http://csgo.steamlytics.xyz with the text "Prices provided by Steamlytics:CSGO". We suggest that you put this link in your footer so it is out of the way but still visible to interested users. If you do not have a website, use your discretion as to the best place (such as the bot's Steam profile). Failure to do so may result in the temporary disabling of your API access.

All API routes have the following parameter you can use:

  • pretty: When set to 1, this will output the JSON Response in pretty print (i.e. with tabs and line breaks). The default value is (application/json)0.

All API routes may also give the following error responses:

  • arrow_drop_downResponse 400 (application/json)
    {
        "success": false,
        "message": "This error message describes something that went wrong due to user-error."
    }
  • arrow_drop_downResponse 401 (application/json)
    {
        "success": false,
        "message": "This error message will explain why you are not authorized to access the API endpoint."
    }
  • arrow_drop_downResponse 429 (application/json)
    {
        "success": false,
        "message": "Exceeded rate limit for calls per day/minute (NUMBER_OF_CALLS)"
    }
  • arrow_drop_downResponse 500 (application/json)
    {
        "success": false,
        "message": "A server error has occurred. Please try again later."
    }

v2/pricelist*

*Available for Pro plan and up only.

URL: http://api.csgo.steamlytics.xyz/v2/pricelist?key={your_api_key} (1 request allowed every 10 minutes; updated about every 6 hours)

This endpoint offers a list of all items in the database (sorted in alphabetical order). Sales from non-market sources are only factored into the median/average prices if and only if they are above the market cap ($400).

The v2/pricelist route offers a few parameters for you to use:

  • currency: Optional. Default is 2001 (or USD, or $). Set this to output the prices in a different currency. Accepts currency ID, code, or symbol. View the list of valid currencies here.

Output documentation:

  • success: true if successful, false if an error occurred.
  • items: a list of objects, each one representing an item.
    • Market Hash Name: the key for each list object.
      • name: the market hash name of the item (same as the key).
      • safe_price: A "safe" price (to combat price manipulation) based on analysis of the data within 7_days, 30_days and all_time, taking into account the volume, trend and deviation of each timespan. This will always be set even if ongoing_price_manipulation is false. The value will always be one of the median_price properties from either 7_days, 30_days or all_time. safe_price will be 0 if the algorithm decides none of the prices are safe. You may want to still take into account the total_volume when deciding whether to use this value or not, as a low volume may result in an inaccurate price. My goal is for you to only need to look at this property when setting prices for your items. Please give feedback!
      • safe_net_price: Same as above, but without fees included.
      • ongoing_price_manipulation: true if price manipulation has been detected for this item, false if not. Please give feedback if you see something that you think should be flagged but is not!
      • total_volume: the recorded number of all-time sales (same as in all_time).
      • 7_days: an object containing pricing data from a 7 day timespan.
        • median_price: The median price of the sales within this timespan. If the volume is 0, this property will not exist.
        • median_net_price: Same as above, but without fees included. If the volume is 0, this property will not exist.
        • average_price: The average price of the sales within this timespan. If the volume is 0, this property will not exist.
        • average_net_price: Same as above, but without fees included. If the volume is 0, this property will not exist.
        • lowest_price: The lowest recorded price of all the sales within this timespan. If the volume is 0, this property will not exist.
        • lowest_net_price: Same as above, but without fees included. If the volume is 0, this property will not exist.
        • highest_price: The highest recorded price of all the sales within this timespan. If the volume is 0, this property will not exist.
        • highest_net_price: Same as above, but without fees included. If the volume is 0, this property will not exist.
        • mean_absolute_deviation: The mean absolute deviation of the prices within this timespan (i.e. how much the prices tend to deviate from the average). If the volume is 0, this property will not exist.
        • deviation_percentage: Same as above, but as a percentage. If the volume is 0, this property will not exist.
        • trend: The trend of the prices within this timespan as a percentage (a positive value means the price is going up, and a negative value means the price is going down). If the volume is 0, this property will not exist.
        • volume: The number of sales recorded within this timespan.
      • 30_days: an object containing pricing data from a 30 day timespan.
        • See 7_days above.
      • all_time: an object containing pricing data since the inception of Steamlytics.
        • See 7_days above.
      • first_seen: A UNIX timestamp of when the item was first recorded.

Example output for http://api.csgo.steamlytics.xyz/v2/pricelist?key={your_api_key}:

  • arrow_drop_downResponse 200 (application/json)
    {
    	"success": true,
    	"items": {
    		"\u2605 Bayonet": {
    			"name": "\u2605 Bayonet",
    			"safe_price": "118.31",
    			"safe_net_price": "110.60",
    			"ongoing_price_manipulation": false,
    			"total_volume": 3148,
    			"7_days": {
    				"median_price": "118.31",
    				"median_net_price": "110.60",
    				"average_price": "118.25",
    				"average_net_price": "102.84",
    				"lowest_price": "100.00",
    				"lowest_net_price": "86.97",
    				"highest_price": "132.25",
    				"highest_net_price": "115.00",
    				"mean_absolute_deviation": "5.46",
    				"deviation_percentage": 0.046173361522199,
    				"trend": -0.050389739620763,
    				"volume": 94
    			},
    			"30_days": {
    				"median_price": "138.94",
    				"median_net_price": "129.88",
    				"average_price": "135.69",
    				"average_net_price": "118.00",
    				"lowest_price": "56.03",
    				"lowest_net_price": "48.73",
    				"highest_price": "156.60",
    				"highest_net_price": "136.19",
    				"mean_absolute_deviation": "10.81",
    				"deviation_percentage": 0.079666887758862,
    				"trend": -0.23473444256315,
    				"volume": 422
    			},
    			"all_time": {
    				"median_price": "148.00",
    				"median_net_price": "138.35",
    				"average_price": "147.33",
    				"average_net_price": "128.12",
    				"lowest_price": "0.17",
    				"lowest_net_price": "0.15",
    				"highest_price": "179.24",
    				"highest_net_price": "155.87",
    				"mean_absolute_deviation": "9.02",
    				"deviation_percentage": 0.061223104595127,
    				"trend": -0.032006931201406,
    				"volume": 3148
    			},
    			"first_seen": 1444261666
    		},
    		// etc ...
    		"\u2605 Bayonet | Bright Water (Battle-Scarred)": {
    			"name": "\u2605 Bayonet | Bright Water (Battle-Scarred)",
    			"safe_price": "81.21",
    			"safe_net_price": "70.62",
    			"ongoing_price_manipulation": false,
    			"total_volume": 1,
    			"7_days": {
    				"volume": 0
    			},
    			"30_days": {
    				"median_price": "81.21",
    				"median_net_price": "70.62",
    				"average_price": "81.21",
    				"average_net_price": "70.62",
    				"lowest_price": "81.21",
    				"lowest_net_price": "70.62",
    				"highest_price": "81.21",
    				"highest_net_price": "70.62",
    				"mean_absolute_deviation": "0.00",
    				"deviation_percentage": 0,
    				"trend": 0,
    				"volume": 1
    			},
    			"all_time": {
    				"median_price": "81.21",
    				"median_net_price": "70.62",
    				"average_price": "81.21",
    				"average_net_price": "70.62",
    				"lowest_price": "81.21",
    				"lowest_net_price": "70.62",
    				"highest_price": "81.21",
    				"highest_net_price": "70.62",
    				"mean_absolute_deviation": "0.00",
    				"deviation_percentage": 0,
    				"trend": 0,
    				"volume": 1
    			},
    			"first_seen": 1466590845
    		},
    		// etc ...
    		"XM1014 | VariCamo Blue (Well-Worn)": {
    			"name": "XM1014 | VariCamo Blue (Well-Worn)",
    			"safe_price": "0.89",
    			"safe_net_price": "0.84",
    			"ongoing_price_manipulation": false,
    			"total_volume": 763,
    			"7_days": {
    				"median_price": "0.89",
    				"median_net_price": "0.84",
    				"average_price": "0.90",
    				"average_net_price": "0.80",
    				"lowest_price": "0.65",
    				"lowest_net_price": "0.58",
    				"highest_price": "1.08",
    				"highest_net_price": "0.95",
    				"mean_absolute_deviation": "0.09",
    				"deviation_percentage": 0.1,
    				"trend": -0.10752688172043,
    				"volume": 30
    			},
    			"30_days": {
    				"median_price": "1.12",
    				"median_net_price": "0.99",
    				"average_price": "1.10",
    				"average_net_price": "0.96",
    				"lowest_price": "0.65",
    				"lowest_net_price": "0.58",
    				"highest_price": "1.51",
    				"highest_net_price": "1.32",
    				"mean_absolute_deviation": "0.16",
    				"deviation_percentage": 0.14545454545455,
    				"trend": -0.32851070467574,
    				"volume": 153
    			},
    			"all_time": {
    				"median_price": "1.70",
    				"median_net_price": "1.49",
    				"average_price": "1.71",
    				"average_net_price": "1.50",
    				"lowest_price": "0.03",
    				"lowest_net_price": "0.01",
    				"highest_price": "11.50",
    				"highest_net_price": "10.00",
    				"mean_absolute_deviation": "0.41",
    				"deviation_percentage": 0.23976608187135,
    				"trend": -0.67071929583276,
    				"volume": 763
    			},
    			"first_seen": 1444277043
    		}
    	},
    	"build_time": 19954,
    	"updated_at": 1467408505
    }
  • arrow_drop_downResponse 429 (application/json)
    {
        "success": false,
        "message": "You can only call this endpoint once every 10 minutes."
    }
v1/pricelist* (deprecated)

*This endpoint is deprecated and will 404 on August 2nd, 2016. Pro plan and up only.

URL: http://api.csgo.steamlytics.xyz/v1/pricelist?key={your_api_key} (results are cached for ~12 hours)

This endpoint offers a list of all items in the database (sorted in alphabetical order), along with pricing information (exactly the same format as v1/prices), for the last 3 days by default. Sales from non-market sources are only factored into the median/average prices if and only if they are above the market cap ($400) (in short, works the same as v1/prices' source=mixed).
If an item has no sales recorded in the selected timespan, the volume will show up as 0, and the pricing data will not be output. You can then use the v1/prices API for that specific item to get the price for a different timespan, such as 1month. Use this route if you don't need updated prices for items this very second, and to save time on requests.

The v1/pricelist route offers a few parameters for you to use:

  • from: Optional. Currently supports 3days, 1week and 1month, wherein the pricelist will give you sales from the selected timespan.
  • currency: Optional. Pro plan and up only. Default is 2001 (or USD, or $). Set this to output the prices in a different currency. Accepts currency ID, code, or symbol. View the list of valid currencies here.

If from is not used, a default value of 3days is assigned.

Example output for http://api.csgo.steamlytics.xyz/v1/pricelist?key={your_api_key}:

  • arrow_drop_downResponse 200 (application/json)
    {
        "success": true,
        "items": {
            "\u2605 Bayonet": {
                "name": "\u2605 Bayonet",
                "median_price": "142.54",
                "median_net_price": "123.95",
                "average_price": "141.81",
                "average_net_price": "123.32",
                "lowest_price": "134.05",
                "lowest_net_price": "116.58",
                "highest_price": "149.11",
                "highest_net_price": "129.67",
                "mean_absolute_deviation": "3.85",
                "deviation_percentage": 0.027149002186024,
                "volume": 12,
                "first_seen": 1444214866
            },
            "\u2605 Bayonet | Blue Steel (Battle-Scarred)": {
                "name": "\u2605 Bayonet | Blue Steel (Battle-Scarred)",
                "median_price": "101.84",
                "median_net_price": "88.57",
                "average_price": "99.93",
                "average_net_price": "86.91",
                "lowest_price": "89.33",
                "lowest_net_price": "77.69",
                "highest_price": "106.73",
                "highest_net_price": "92.81",
                "mean_absolute_deviation": "5.30",
                "deviation_percentage": 0.053037125988192,
                "volume": 4,
                "first_seen": 1444425825
            },
            "\u2605 Bayonet | Blue Steel (Factory New)": {
                "name": "\u2605 Bayonet | Blue Steel (Factory New)",
                "volume": 0
            }
            // ...
        },
        "from": 1454521758,
        "build_time": 37415,
        "updated_at": 1448131806,
        "currency": 2001
    }

v2/pricelist/compact*

*Available for Pro plan and up only.

URL: http://api.csgo.steamlytics.xyz/v2/pricelist/compact?key={your_api_key} (1 request allowed every 10 minutes; updated about every 6 hours)

This endpoint offers a compact version of v2/pricelist, if you only care about getting the price of an item and nothing more.

The v2/pricelist/compact route offers a few parameters for you to use:

  • currency: Optional. Default is 2001 (or USD, or $). Set this to output the prices in a different currency. Accepts currency ID, code, or symbol. View the list of valid currencies here.

Output documentation:

  • success: true if successful, false if an error occurred.
  • items: a collection of key-value pairs, with the key being the market_hash_name for an item and the value being the corresponding safe_price property from v2/pricelist.

If an item has a safe_price of 0.00 on v2/pricelist, it will not be included in the items collection for v2/pricelist/compact.

Example output for http://api.csgo.steamlytics.xyz/v2/pricelist/compact?key={your_api_key}:

  • arrow_drop_downResponse 200 (application/json)
    {
    	"success": true,
    	"items": {
    		"AK-47 | Aquamarine Revenge (Battle-Scarred)": "8.78",
    		"AK-47 | Aquamarine Revenge (Factory New)": "28.36",
    		// ...
    		"\u2605 StatTrak\u2122 Shadow Daggers | Urban Masked (Well-Worn)": "76.14"
    	}
    }
  • arrow_drop_downResponse 429 (application/json)
    {
        "success": false,
        "message": "You can only call this endpoint once every 10 minutes."
    }

v1/prices

URL: http://api.csgo.steamlytics.xyz/v1/prices/{market_hash_name}?key={your_api_key} (results are cached for 10 min)

The v1/prices route offers a few parameters for you to use:

  • source: Optional. Set this to 0 to get data from the Steam Community Market only. Set this to mixed if you want to use the other sources only for prices above the Steam Community Market cap ($400). The default value for source is mixed, if not set.
  • from: Optional. A UNIX timestamp or a string (i.e. today, 24hours, 3days, 1week, 1month, 6months) that retrieves all results starting after the timestamp.
  • to: Optional. A UNIX timestamp that retrieves all results before the timestamp. Can be used in conjunction with from.
  • on: Optional. A date string formatted in Y-m-d that retrieves all results on that date. Shouldn't be used with from or to.
  • currency: Optional. Pro plan and up only. Default is 2001 (or USD, or $). Set this to output the prices in a different currency. Accepts currency ID, code, or symbol. View the list of valid currencies here.

If neither from, to or on parameters are used, all-time data will be returned.

Example output for http://api.csgo.steamlytics.xyz/v1/prices/Operation Phoenix Weapon Case?key={your_api_key}:

  • arrow_drop_downResponse 200 (application/json)
    {
        "success": true,
        "median_price": "0.07",
        "median_net_price": "0.05",
        "average_price": "0.07",
        "average_net_price": "0.05",
        "lowest_price": "0.03",
        "lowest_net_price": "0.01",
        "highest_price": "495.00",
        "highest_net_price": "445.50",
        "mean_absolute_deviation": "0.01",
        "deviation_percentage": 0.14285714285714,
        "volume": 3776263,
        "first_seen": 1444213092
    }
  • arrow_drop_downResponse 404 (application/json)
    {
        "success": false,
        "message": "Item not found."
    }

v1/items

URL: http://api.csgo.steamlytics.xyz/v1/items?key={your_api_key} (results are cached for 10 minutes)

This endpoint displays a list of all items currently tracked in the database, sorted alphabetically. icon_url, name_color and quality_color is also provided for each item, but these are new data properties and may be an empty string for some items until another sale is recorded for them.

Example output for http://api.csgo.steamlytics.xyz/v1/items/?key={your_api_key}:

  • arrow_drop_downResponse 200 (application/json)
    {
        "success": true,
        "num_items": 6104,
        "items": [
            {
                "market_name": "\u2605 Bayonet",
                "market_hash_name": "\u2605 Bayonet",
                "icon_url": "\/\/steamcommunity-a.akamaihd.net\/economy\/image\/-9a81dlWLwJ2UUGcVs_nsVtzdOEdtWwKGZZLQHTxDZ7I56KU0Zwwo4NUX4oFJZEHLbXU5A1PIYQh5hlcX0nvUOGsx8DdQBJjIAVHubSaKQZ53P3NZXMXvYmykdLSxqWkZ7-HkjMIvpIj3u2Y84733gzh_RU_MG_zIYLEdQ45fxiOrdJh0ExF",
                "name_color": "8650AC",
                "quality_color": "EB4B4B"
            },
            {
                "market_name": "\u2605 Bayonet | Blue Steel (Battle-Scarred)",
                "market_hash_name": "\u2605 Bayonet | Blue Steel (Battle-Scarred)",
                "icon_url": "\/\/steamcommunity-a.akamaihd.net\/economy\/image\/-9a81dlWLwJ2UUGcVs_nsVtzdOEdtWwKGZZLQHTxDZ7I56KU0Zwwo4NUX4oFJZEHLbXH5ApeO4YmlhxYQknCRvCo04DEVlxkKgpotLu8JAllx8zJYAJA4MmzkL-DkvbiKvXTkzNVucNzj7mX9tWk21Xkr0JvN231JYGcdA47NF3Y81Hoxebs1sftot2XnmcyW1u0",
                "name_color": "8650AC",
                "quality_color": "EB4B4B"
            },
            // etc ...
        ]
    }