API Documentation

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

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:Steam API must contain a link to http://steam.steamlytics.xyz with the text "Powered by Steamlytics:Steam". 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."
    }

v1/inventory

URL: http://api.steam.steamlytics.xyz/v1/inventory/{ STEAM_ID }/{ APP_ID }/{ CONTEXT_ID }?key={your_api_key} (results are always up-to-date)

This endpoint has a specific calls-per-minute limit which overrides the global calls per minute limit and applies to all v1/inventory endpoints:

  • Free: 10 calls per minute
  • Developer: 20 calls per minute
  • Pro: 60 calls per minute
  • Enterprise: 600 calls per minute

This is an endpoint that proxies Steam's /inventory endpoint (returns the same JSON data). Useful if you don't want to worry about managing a bunch of proxies.

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

  • trading: Optional. Default is 0. Set this to 1 display only tradable items.
  • market: Optional. Default is 0. Set this to 1 display only marketable items.

Example output for: http://api.steam.steamlytics.xyz/v1/inventory/76561198045552709/730/2?key={your_api_key} (results are always up-to-date)

  • arrow_drop_downResponse 200 (application/json)
    {
    	"assets": [
    		{
    			"appid": "730",
    			"contextid": "2",
    			"assetid": "7925983734",
    			"classid": "638243112",
    			"instanceid": "143865972",
    			"amount": "1"
    		},
    		// ...
    		{
    			"appid": "730",
    			"contextid": "2",
    			"assetid": "7414341322",
    			"classid": "1923058752",
    			"instanceid": "143865972",
    			"amount": "1"
    		}
    	],
    	"descriptions": [
    		// ...
    		{
    			"appid": 730,
    			"classid": "1923058752",
    			"instanceid": "143865972",
    			"currency": 0,
    			"background_color": "",
    			"icon_url": "-9a81dlWLwJ2UUGcVs_nsVtzdOEdtWwKGZZLQHTxDZ7I56KU0Zwwo4NUX4oFJZEHLbXX7gNTPcUxuxpJSXPbQv2S0M7eXlxLd0pS7uijLQRl0qXKdG8QtdjmkNHdxPOsZ-yDw2hS7cEk0r7Fp9733gLi5QMyNJeNnHRE",
    			"icon_url_large": "",
    			"descriptions": [
    				{
    					"type": "html",
    					"value": "This key only opens Gamma 2 cases"
    				},
    				{
    					"type": "html",
    					"value": " "
    				},
    				{
    					"type": "html",
    					"value": "",
    					"color": "00a000"
    				}
    			],
    			"tradable": 1,
    			"name": "Gamma 2 Case Key",
    			"name_color": "D2D2D2",
    			"type": "Base Grade Key",
    			"market_name": "Gamma 2 Case Key",
    			"market_hash_name": "Gamma 2 Case Key",
    			"commodity": 1,
    			"market_tradable_restriction": 7,
    			"marketable": 1,
    			"tags": [
    				{
    					"category": "Type",
    					"internal_name": "CSGO_Tool_WeaponCase_KeyTag",
    					"localized_category_name": "Type",
    					"localized_tag_name": "Key"
    				},
    				{
    					"category": "Quality",
    					"internal_name": "normal",
    					"localized_category_name": "Category",
    					"localized_tag_name": "Normal"
    				},
    				{
    					"category": "Rarity",
    					"internal_name": "Rarity_Common",
    					"localized_category_name": "Quality",
    					"localized_tag_name": "Base Grade",
    					"color": "b0c3d9"
    				}
    			]
    		}
    	],
    	"total_inventory_count": 40,
    	"success": 1,
    	"rwgrsn": -2
    }

v1/inventory/legacy

URL: http://api.steam.steamlytics.xyz/v1/inventory/legacy/{ STEAM_ID }/{ APP_ID }/{ CONTEXT_ID }?key={your_api_key} (results are always up-to-date)

This endpoint has a specific calls-per-minute limit which overrides the global calls per minute limit and applies to all v1/inventory endpoints:

  • Free: 10 calls per minute
  • Developer: 20 calls per minute
  • Pro: 60 calls per minute
  • Enterprise: 600 calls per minute

This is an endpoint that proxies Steam's /inventory endpoint and converts the data back into the same format as the deprecated /inventory/json endpoint, for backwards-compatibility. Useful if you need a drop-in replacement for the old /inventory/json endpoint (and don't want to update all your code).

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

  • trading: Optional. Default is 1. Set this to 1 display only tradable items, or 0 to show all items.
  • market: Optional. Default is 0. Set this to 1 display only marketable items.

Example output for: http://api.steam.steamlytics.xyz/v1/inventory/legacy/76561198045552709/730/2?key={your_api_key} (results are always up-to-date)

  • arrow_drop_downResponse 200 (application/json)
    {
    	"success": true,
    	"rgInventory": {
    		"7925983734": {
    			"id": "7925983734",
    			"classid": "638243112",
    			"instanceid": "143865972",
    			"amount": "1",
    			"pos": 1
    		},
    		// ...
    		"7414341322": {
    			"id": "7414341322",
    			"classid": "1923058752",
    			"instanceid": "143865972",
    			"amount": "1",
    			"pos": 40
    		}
    	},
    	"rgCurrency": [
    	],
    	"rgDescriptions": {
    		// ...
    		"1923058752_143865972": {
    			"appid": "730",
    			"classid": "1923058752",
    			"instanceid": "143865972",
    			"icon_url": "-9a81dlWLwJ2UUGcVs_nsVtzdOEdtWwKGZZLQHTxDZ7I56KU0Zwwo4NUX4oFJZEHLbXX7gNTPcUxuxpJSXPbQv2S0M7eXlxLd0pS7uijLQRl0qXKdG8QtdjmkNHdxPOsZ-yDw2hS7cEk0r7Fp9733gLi5QMyNJeNnHRE",
    			"icon_drag_url": "",
    			"name": "Gamma 2 Case Key",
    			"market_hash_name": "Gamma 2 Case Key",
    			"market_name": "Gamma 2 Case Key",
    			"name_color": "D2D2D2",
    			"background_color": "",
    			"type": "Base Grade Key",
    			"tradable": 1,
    			"marketable": 1,
    			"commodity": 1,
    			"market_tradable_restriction": "7",
    			"descriptions": [
    				{
    					"type": "html",
    					"value": "This key only opens Gamma 2 cases"
    				},
    				{
    					"type": "html",
    					"value": " "
    				},
    				{
    					"type": "html",
    					"value": "",
    					"color": "00a000",
    					"app_data": {
    						"limited": 1
    					}
    				}
    			],
    			"tags": [
    				{
    					"internal_name": "CSGO_Tool_WeaponCase_KeyTag",
    					"name": "Key",
    					"category": "Type",
    					"category_name": "Type"
    				},
    				{
    					"internal_name": "normal",
    					"name": "Normal",
    					"category": "Quality",
    					"category_name": "Category"
    				},
    				{
    					"internal_name": "Rarity_Common",
    					"name": "Base Grade",
    					"category": "Rarity",
    					"color": "b0c3d9",
    					"category_name": "Quality"
    				}
    			]
    		}
    	},
    	"rgAppInfo": {
    		"appid": 730,
    		"name": "Counter-Strike: Global Offensive",
    		"icon": "https:\/\/steamcdn-a.akamaihd.net\/steamcommunity\/public\/images\/apps\/730\/69f7ebe2735c366c65c0b33dae00e12dc40edbe4.jpg",
    		"link": "http:\/\/steamcommunity.com\/app\/730"
    	},
    	"more": false,
    	"more_start": false
    }

v1/currencies

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

Outputs a list of currencies that the website has encountered on the Steam Community Market. Some currencies may be missing if there have been no sales encountered using that currency. The country code in the output is updated manually by me, so it may be an empty string.

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

  • arrow_drop_downResponse 200 (application/json)
    {
        "success": true,
        "currencies": {
            "2001": {
                "id": 2001,
                "symbol": "$",
                "code": "USD"
            },
            "2002": {
                "id": 2002,
                "symbol": "\u00a3",
                "code": "GBP"
            },
            // ...
            "2032": {
                "id": 2032,
                "symbol": "AED",
                "code": "AED"
            }
        }
    }

v1/currencies/historical*

*Available for Pro plan and up only.

URL: http://api.steam.steamlytics.xyz/v1/currencies/historical/{ DATE_IN_YYYY-MM-DD }?key={your_api_key} (results are cached for 10 min)

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

  • See v1/currencies/latest.

This route returns a table of exchange rates for the specified { DATE_IN_YYYY-MM-DD }, based on the base currency ID. Date is available starting from 2016-01-02. The base currency will always be shown in the table with an exchange rate of 1.

Example output for http://api.steam.steamlytics.xyz/v1/currencies/historical/2016-01-02?key={your_api_key}:

  • arrow_drop_downResponse 200 (application/json)
    {
        "success": true,
        "timestamp": 1451792806,
        "base": 2001,
        "rates": {
            "2001": 1,
            "2002": 0.67574140370402,
            // ..
            "2032": 3.6757783330122
        }
    }

v1/currencies/convert*

*Available for Enterprise plan and up only.

URL: http://api.steam.steamlytics.xyz/v1/currencies/convert/{ AMOUNT }/{ FROM_CURRENCY_ID }/{ TO_CURRENCY_ID }?key={your_api_key}

The v1/currencies/convert route requires a few parameters:

  • { AMOUNT }: The amount you want to convert. Can be a decimal value.
  • { FROM_CURRENCY_ID }: The currency ID you are converting from. See v1/currencies for a list.
  • { TO_CURRENCY_ID }: The currency ID you want to convert to. See v1/currencies for a list.

Use this route to convert an amount from one currency to another. The response will also give you the exchange rate from the first currency to the second currency.

Example output for http://api.steam.steamlytics.xyz/v1/currencies/convert/123.45/2001/2005?key={your_api_key}:

  • arrow_drop_downResponse 200 (application/json)
    {
        "success": true,
        "timestamp": 1451794104,
        "rate": 74.283968649371,
        "amount": 9170.3559297649
    }