Documentation de l'API Steam

57 points de terminaison pour les prix du marché Steam, les inventaires des joueurs, les valeurs de float CS2, les profils et le trading — regroupés selon leur fonction. Chaque entrée liste ses paramètres, un exemple de requête et la réponse.

URL de base

www.steamwebapi.com

En-tête d'authentification

X-Api-Key

Limites de débit

Selon le forfait →

Account

Utilisation du compte SteamWebAPI et automatisation de la session de connexion Steam.

2 points de terminaison
GET /account/me

📊 Récupérer les statistiques de votre compte et d'utilisation

Baseurl: https://www.steamwebapi.com/account/me 💬 **Récupérez les détails de votre compte et vos statistiques d'utilisation.** - Ce point de terminaison fournit des détails complets sur votre compte, y compris les statistiques d'utilisation et les journaux d'activité. - **Suivi de l'utilisation :** Le point de terminaison enregistre votre utilisation de l'API et fournit des informations sur votre activité. - **Limitation de débit :** La requête génère un enregistrement d'utilisation à chaque appel. - **Données en temps réel :** Obtenez des informations à jour sur l'utilisation de l'API de votre compte sur différentes périodes (minute, heure, jour, semaine, mois). 🛠️ **Détails importants :** - **Détails d'utilisation** : Suivez votre utilisation de l'API sur la dernière minute, heure, jour, semaine et mois. - **Infos d'abonnement** : Obtenez des informations sur le statut et la durée de votre abonnement. 🌐 **Comment l'utiliser :** - Fournissez votre **clé API** dans la requête pour récupérer les données. L'API répondra avec une répartition de votre utilisation, le statut de votre abonnement et le dernier état de la Steam Web API.

Paramètres

Nom Type Requis Description
key string oui Votre clé API pour l'authentification. Récupérez-la depuis votre tableau de bord (coin supérieur droit).

Exemple de requête

curl -H "X-Api-Key: YOUR_API_KEY" \
  "https://www.steamwebapi.com/account/me"

Réponses

  • 200 Statistiques du compte et d'utilisation récupérées avec succès.
  • 400 Requête invalide ou clé API manquante.
  • 401 Accès non autorisé en raison d'une clé API invalide ou manquante.
POST /steam/api/steamloginsecure

📦 Automatiser le processus de connexion Steam

Baseurl: https://www.steamwebapi.com/steam/api/steamloginsecure 💬 **Ce que fait ce point de terminaison :** - Automatise votre processus de connexion Steam, y compris pour le trading, le marché et d'autres fonctionnalités de Steam Community. - Avec le cookie `steamLoginSecure`, vous pouvez utiliser notre API de Trading et créer facilement des bots de trading, des trackers de marché, et plus encore. 🛠️ **Comment l'utiliser :** Il existe **deux méthodes d'authentification** : 1. **Connexion par nom d'utilisateur + mot de passe** - Envoyez une requête POST avec votre `username` et `password` Steam dans le corps de la requête. - Si votre compte est protégé par Steam Guard, incluez le paramètre `code` de votre authentificateur mobile. 2. **Connexion par jeton de rafraîchissement** - Au lieu du nom d'utilisateur/mot de passe, vous pouvez fournir un `steamrefreshtoken` (JWT). - Ce jeton est renvoyé après la connexion initiale et vous permet de demander un nouveau cookie `steamLoginSecure` sans avoir à ressaisir vos identifiants. 🚨 **Remarque importante :** - Ne fournissez **pas** à la fois des identifiants de connexion et un `steamrefreshtoken`. - Une seule des deux options doit être présente, pas les deux. 🌐 **Informations supplémentaires :** - Le processus de connexion est géré de manière sécurisée. Aucun mot de passe n'est stocké côté serveur. - Ce point de terminaison est idéal pour créer : - Des bots de trading - Des analyseurs de marché - Des vérificateurs de session automatisés 📦 **Réponse :** - En cas de succès, vous recevrez les cookies suivants : - `steamLoginSecure` – requis pour les actions authentifiées de Steam Community - `sessionid` – requis pour la plupart des interactions web - `browserid` – identifie le navigateur/la session - `steamrefreshtoken` – jeton réutilisable pour récupérer de nouveaux cookies `steamLoginSecure` ultérieurement 🕒 **Durée de vie du jeton** - Le `steamrefreshtoken` est généralement valide **jusqu'à 6 mois** - Il peut être utilisé à plusieurs reprises pour récupérer de nouveaux cookies `steamLoginSecure` sans se reconnecter.

Paramètres

Aucun paramètre en dehors de votre clé API.

Corps de la requête

Payload JSON contenant les paramètres requis pour la connexion Steam. Il existe deux méthodes d'authentification : - Via `username` + `password` (avec en option, si Guard est actif, MFA puis shared_secret comme `code` - PAS LE CODE GUARD) - Ou uniquement via `steamrefreshtoken` ⚠️ Vous devez fournir soit (username + password), soit steamrefreshtoken – mais pas les deux.

Exemple de requête

curl -H "X-Api-Key: YOUR_API_KEY" \
  "https://www.steamwebapi.com/steam/api/steamloginsecure"

Réponses

  • 200 Connexion Steam réussie. Les cookies sont renvoyés.
  • 411 Nom d'utilisateur ou mot de passe invalide fourni.
  • 412 Échec de la récupération de cookies valides depuis Steam.
  • 413 SteamLoginSecure est invalide.
  • 421 Corps de requête invalide ou paramètres requis manquants.
  • 429 Limite de débit dépassée. Réessayez plus tard.

Items

Catalogues d'items Steam, prix des skins CS2, historique des prix par item et activité des ordres. Recommandé pour la recherche d'items, les flux de prix et les pages de détail d'items.

6 points de terminaison
GET /steam/api/items

🎯 Récupérer tous les items avec leurs prix - L'API Steam Market complète

Baseurl: https://www.steamwebapi.com/steam/api/items?key=YOUR_API_KEY&game=cs2 💬 **Ce que fait ce point de terminaison :** - Récupère des données d'items complètes pour les jeux Steam (CS2, Rust, Dota 2, TF2). - Renvoie des informations de prix détaillées provenant du Steam Market et de marchés tiers. - Fournit des métadonnées incluant rareté, usure, statut StatTrak et plus encore. - Prend en charge le filtrage avancé, le tri et la pagination. 🛠️ **Fonctionnalités :** - **Prix multi-sources** : prix Steam, prix réels du marché, ordres d'achat et données historiques. - **Filtres avancés** : filtrer par plage de prix, usure, type d'item, groupe et plus encore. - **Tri flexible** : trier par prix, popularité, ratio gain/perte ou aléatoirement. - **Sélection de champs** : utilisez le paramètre `select` pour ne renvoyer que des champs spécifiques. - **Formats multiples** : exportez en JSON, CSV, XML ou instructions de base de données. - **Conversion de devises** : convertissez les prix en EUR, TRY, RUB et plus encore. 🌐 **Comment l'utiliser :** - Appel de base : `GET /steam/api/items?key=YOUR_KEY&game=cs2` - Rechercher des items : `GET /steam/api/items?key=YOUR_KEY&search=AK-47` - Filtrer par prix : `GET /steam/api/items?key=YOUR_KEY&price_min=10&price_max=100` - Filtrer par type : `GET /steam/api/items?key=YOUR_KEY&item_group=knife&wear=fn` - Trier par popularité : `GET /steam/api/items?key=YOUR_KEY&sort_by=soldZa` - Sélectionner des champs : `GET /steam/api/items?key=YOUR_KEY&select=markethashname,pricelatest,image` - Exporter en CSV : `GET /steam/api/items?key=YOUR_KEY&format=csv` 📊 **Champs de réponse expliqués :** - `pricelatest` : Prix d'offre le plus bas actuel sur le Steam Market. - `pricelatestsell` : Prix de la vente Steam la plus récente. - `pricereal` : Prix le plus bas actuel sur les marchés tiers. - `pricemix` : Prix le plus bas parmi toutes les sources (Steam + marchés). - `buyorderprice` : Prix d'ordre d'achat Steam le plus élevé. - `sold24h/7d/30d/90d` : Nombre d'items vendus sur la période respective. - `points` : Score de capitalisation de marché (indicateur prix × volume). - `winloss` : Comparaison de prix Steam vs marchés réels (positif = Steam moins cher). - `releasedat` : Date de sortie connue la plus ancienne de la collection de skin de base, sous forme d'objet UTC (date, timezone_type: 3, timezone: UTC), ou null. Minuit est une convention de présentation, pas une heure de sortie connue. Mise à jour par une commande d'arrière-plan quotidienne ; ce n'est pas le premier listing Steam ni une date de sortie spécifique à une variante. - CS2 `only_new_items=1` ou `true` : items manquants de toutes les collections de skins partageant la dernière date de sortie. - CS2 `with_preview_items=1` : items normaux plus les mêmes items manquants de la dernière sortie. Les lignes d'aperçu utilisent des IDs normaux, la collection dans `tag7`, et `preview=true` ; le `description` optionnel conserve le texte source. `steamlisting` est déduit d'une image de l'économie Steam, sans vérification de listing en direct. ⚠️ **Conseils de performance :** - Utilisez le paramètre `max` pour limiter les résultats (défaut : 50000). - Appliquez des filtres pour restreindre les résultats. - Utilisez `select` pour ne renvoyer que les champs nécessaires. - Utilisez `production=1` en production pour supprimer les champs d'information.

Paramètres

Nom Type Requis Description
key string oui Votre clé API pour l'authentification. Requise pour toutes les requêtes. Obtenez votre clé API depuis le Tableau de bord → coin supérieur droit → section Clé API.
game string non Identifiant du jeu. Chaque jeu a des propriétés et marchés d'items différents. **Jeux pris en charge :** - `cs2` (défaut) : Counter-Strike 2 - Prise en charge complète incluant les prix réels du marché - `rust` : Rust - Données de base du marché Steam - `dota` : Dota 2 - Données de base du marché Steam - `tf2` : Team Fortress 2 - Données de base du marché Steam
page integer non Numéro de page pour la pagination. À utiliser avec le paramètre `max`. - La page 1 renvoie les items 1-50000 (avec le max par défaut) - La page 2 renvoie les items 50001-100000, etc.
max integer non Nombre maximum d'items par page. Des valeurs plus basses améliorent le temps de réponse. **Recommandations :** - Utilisez 100-1000 pour les applications web - Utilisez des valeurs plus élevées pour les exports de données - Maximum : 50000 items par requête ex. 100
limit integer non Alias pour `max`, accepté pour les clients utilisant le nom le plus courant. Appliqué uniquement si `max` est absent — un `max` explicite l'emporte toujours, et n'en envoyer aucun conserve la valeur par défaut 50000. ex. 12
sort_by string non Ordre de tri des résultats. ⚠️ **Remarque sur les performances :** Le tri peut ralentir considérablement les réponses pour de grands ensembles de résultats. Utilisez des filtres (`price_min`, `item_group`, etc.) pour réduire les données avant le tri, ou utilisez le défaut `priceAz` pour de meilleures performances. **Tri basé sur le prix :** - `priceAz` (défaut) : Prix du listing Steam croissant (le moins cher en premier) - *Le plus rapide* - `priceZa` : Prix du listing Steam décroissant (le plus cher en premier) - `priceRealAz` : Prix du marché tiers croissant - `priceRealZa` : Prix du marché tiers décroissant **Tri gain/perte** (comparaison de prix Steam vs marché) : - `winner` : Meilleures affaires en premier (Steam moins cher que les marchés) - `loser` : Pires affaires en premier (Steam plus cher) - `winLossAz` : Gain/perte croissant - `winLossZa` : Gain/perte décroissant - `winnerRandom` : Gagnants en premier, aléatoire au sein du groupe - `loserRandom` : Perdants en premier, aléatoire au sein du groupe **Tri basé sur le volume :** - `soldAz` : Items les moins vendus en premier - `soldZa` : Items les plus vendus en premier (items populaires) - `pointsAz` : Capitalisation de marché la plus basse en premier - `pointsZa` : Capitalisation de marché la plus élevée en premier **Autre :** - `name` : Ordre alphabétique par nom de hash de marché - `random` : Ordre aléatoire (utile pour la découverte) - *Le plus lent*
search string non Rechercher des items par nom. Minimum 3 caractères requis. **Exemples :** - `search=AK-47` - Trouve tous les skins AK-47 - `search=Doppler` - Trouve tous les items Doppler (couteaux, gants) - `search=Redline` - Trouve les skins Redline sur toutes les armes La recherche est insensible à la casse et correspond aux noms partiels.
price_min number non Prix minimum du listing Steam Market en USD. - Les items en dessous de ce prix seront exclus - À utiliser avec `price_max` pour définir une plage de prix - Les prix sont dans la devise de base (USD) sauf si `currency` est spécifié
price_max number non Prix maximum du listing Steam Market en USD. - Les items au-dessus de ce prix seront exclus - Le maximum Steam Market est d'environ 3000 $ (varie selon la région) - À utiliser avec `price_min` pour définir une plage de prix
price_real_min number non Prix minimum du marché tiers en USD. - Filtre par le prix le plus bas disponible sur tous les marchés tiers - Utile pour trouver des opportunités d'arbitrage
price_real_max number non Prix maximum du marché tiers en USD. - Filtre par le prix le plus bas disponible sur tous les marchés tiers - Les items de grande valeur peuvent dépasser les limites du Steam Market (3000 $)
item_group string non Filtrer par catégorie/groupe d'item. **Groupes CS2 :** - `knife` - Tous les couteaux (Karambit, Butterfly, etc.) - `gloves` - Tous les gants - `pistol` - Pistolets (Glock, USP-S, Desert Eagle, etc.) - `rifle` - Fusils (AK-47, M4A1-S, etc.) - `sniper rifle` - Fusils de précision (AWP, SSG 08, etc.) - `smg` - Mitraillettes (MP9, MAC-10, etc.) - `shotgun` - Fusils à pompe - `machinegun` - Mitrailleuses (M249, Negev) - `case` - Caisses d'armes - `capsule` - Capsules de stickers - `collection` - Collections Plusieurs groupes : `knife,gloves` (séparés par des virgules)
item_type string non Filtrer par type d'arme spécifique au sein d'un groupe. **Exemples :** - `ak-47` - Uniquement les skins AK-47 - `awp` - Uniquement les skins AWP - `karambit` - Uniquement les couteaux Karambit - `m4a1-s` - Uniquement les skins M4A1-S Utilisez `/steam/api/info/items?type=types` pour obtenir tous les types disponibles.
item_name string non Filtrer par nom de skin (sans le type d'arme). **Exemples :** - `redline` - Tous les skins Redline (AK-47, AWP, etc.) - `doppler` - Tous les items Doppler - `asiimov` - Tous les skins Asiimov - `fade` - Tous les items Fade Utilisez `/steam/api/info/items?type=items` pour obtenir tous les noms disponibles.
wear string non Filtrer par niveau d'état/usure de l'item. **Niveaux d'usure :** - `fn` - Factory New (0.00 - 0.07 float) - `mw` - Minimal Wear (0.07 - 0.15 float) - `ft` - Field-Tested (0.15 - 0.38 float) - `ww` - Well-Worn (0.38 - 0.45 float) - `bs` - Battle-Scarred (0.45 - 1.00 float) Plusieurs usures : `fn,mw` (séparées par des virgules)
select string non Sélectionner des champs spécifiques à renvoyer. Réduit considérablement la taille de la réponse. **Exemple :** `select=markethashname,pricelatest,image` **Sélections de champs populaires :** - Basique : `markethashname,pricelatest,image` - Trading : `markethashname,pricelatest,pricereal,winloss` - Prix complet : `markethashname,pricelatest,pricereal,buyorderprice,sold24h` Les noms de champs doivent correspondre exactement aux noms de champs de la réponse (minuscules).
currency string non Convertit les prix dans la devise spécifiée. **Devises prises en charge :** - `USD` (défaut), `EUR`, `GBP`, `TRY`, `RUB`, `CNY`, `JPY`, `BRL`, `PLN`, `CAD`, `AUD` Les taux de conversion sont mis à jour toutes les heures depuis Steam.
production string non Définir sur `1` lors d'une utilisation en environnement de production. **Avantages :** - Supprime les champs d'information/aide de la réponse - Payload de réponse plus propre et plus petit - Sera requis dans les futures versions de l'API **Remarque :** Si non défini, vous pourriez voir des avertissements de dépréciation.
format string non Format de sortie de la réponse. **Formats JSON :** - `json` (défaut) : JSON standard - `gzip` : JSON compressé Gzip - `zip` : JSON compressé Zip - `ndjson` : JSON délimité par des sauts de ligne (streaming) **Formats d'export :** - `csv` : Valeurs séparées par des virgules - `xml` : Format XML - `html` : Tableau HTML **Formats base de données :** - `mysql` : Instructions INSERT MySQL - `mysql_with_table` : MySQL avec CREATE TABLE - `pgsql` : Instructions INSERT PostgreSQL - `pgsql_with_table` : PostgreSQL avec CREATE TABLE - `mongo` : Documents d'insertion MongoDB
pretty string non Formater joliment la sortie JSON (indentée, lisible). - `0` (défaut) : JSON minifié (taille réduite) - `1` : JSON formaté (plus facile à lire) S'applique uniquement aux formats json, gzip et zip.
markets string non Restreint les prix des marchés tiers à des marchés spécifiques uniquement. **Marchés disponibles :** - `skinbaron` - Skinbaron.de - `skinport` - Skinport.com - `dmarket` - DMarket.com - `buff` - Buff163.com - `waxpeer` - Waxpeer.com - `csgotm` - CS.Money / CSGOTradeMoney - `haloskins` - HaloSkins - `tradeit` - Tradeit.gg - `skinbid` - Skinbid.com **Exemple :** `markets=skinbaron,buff,skinport` Si spécifié, `pricereal` sera le prix le plus bas parmi les marchés sélectionnés uniquement.
with_preview_items boolean non Ajoute les items nouvellement découverts qui ne sont pas encore entièrement indexés. - `0` ou `false` (défaut) : Renvoie uniquement les items entièrement indexés - `1` ou `true` : Ajoute à la fin les items manquants de la base de données de la dernière vague de sortie de collection de skins Les items d'aperçu ont : - Un indicateur `preview: true` - Des données limitées (pas de prix, métadonnées basiques uniquement) - Un instantané de disponibilité en base de données mis en cache pendant 6 heures Utile pour renvoyer le catalogue actuel complet pendant que les nouveaux items de collection ne sont pas encore entièrement indexés. Les items historiquement manquants de la base de données ne sont pas ajoutés. Le catalogue ByMykel partagé est actualisé par une tâche d'arrière-plan toutes les cinq minutes. Les IDs d'aperçu utilisent l'algorithme d'ID d'item normal ; tag7 contient le nom de la collection. steamlisting est déduit d'une image source de l'économie Steam, non vérifié en direct. Les deux options d'aperçu partagent les mêmes champs et le même comportement de select ; preview survit toujours à select.
only_new_items string non Définir sur 1 ou true pour les skins CS2 manquants dans la base de données lors de la dernière vague de sortie de collection de skins. Chaque collection de skins avec la date de sortie commune la plus récente est incluse. Les collections non datées et futures sont exclues. Prime sur with_preview_items. Prend en charge search, wear, item_type, item_group, item_name, collection_id, page, max et select. Utilise les mêmes champs d'aperçu que with_preview_items : IDs d'items normaux, collection dans tag7 et steamlisting déduit des images source de l'économie Steam (pas de vérification de page en direct). preview=true survit à select.
collection_id string non Restreint only_new_items=1 ou true à un ID de collection ByMykel exact au sein de la dernière vague de sortie.

Exemple de requête

curl -H "X-Api-Key: YOUR_API_KEY" \
  "https://www.steamwebapi.com/steam/api/items?max=100&limit=12"

Réponses

  • 200 La requête a réussi, et les items sont renvoyés.
  • 400 Paramètres de requête invalides
  • 404 Jeu non trouvé. Jeux pris en charge : cs2, rust, dota, tf2.
  • 429 Limite de débit dépassée. Veuillez patienter avant de faire d'autres requêtes.
  • 500 Erreur interne du serveur
  • 503 La disponibilité de l'aperçu est temporairement indisponible lorsque `with_preview_items=1`.
GET /steam/api/item

📦 Retrieve Item Details with Pricing of all Markets and History

Baseurl: https://www.steamwebapi.com/steam/api/item?key=YOUR_API_KEY&market_hash_name=AK-47%20%7C%20Redline%20(Field-Tested) 💬 **What this endpoint does:** - 🔍 Retrieve details of a specific item using its `market_hash_name`, `slug`, or `hashId`. - 📊 Provides enriched details like: - Pricing information. - Tags and metadata. - A brief price history. - Retrive all variants of the item as groups if `with_groups` is set to `true`. For example, `AK-47 | Redline (Field-Tested)` will return all variants of the AK-47 | Redline. 🚀 **Why use this endpoint?** - Focuses on a single item with detailed data for advanced use cases. - Optimized for scenarios where precision matters, like market analytics or item tracking. ⚠️ **Note:** This endpoint is similar to `/steam/api/items`, but it focuses on a single item with enriched details.

Paramètres

Nom Type Requis Description
key string oui Your API key for authentication. Retrieve it from your Dashboard (top-right corner).
market_hash_name string oui Required. The `market_hash_name` of the item. Example: `AK-47 | Redline (Field-Tested)`. ex. AK-47 | Redline (Field-Tested)
currency string non Optional. The desired currency for price conversion (e.g., EUR, TRY, RUB, USD). Default is USD. See the Currency API for available codes. ex. EUR
with_groups string non Optional. Set to `true` to retrieve all items variant of an item - stattrak, another wears, souvenirs (Its very good feature). Default is `false`. ex.
production string non If you run in production, please set this to 1. Default is 0. This is in future required, and if not set, you will get a warning.
markets string non Filter prices to specific markets only (comma-separated). The `pricereal` will be calculated as the lowest price among the specified markets. Example: `skinbaron,skinport,dmarket`. Available markets: skinbaron, skinport, dmarket, buff, waxpeer, csgotm, haloskins, tradeit, skinbid. Default: all markets.
format string non Response format: json (default), csv, xml, html, gzip, zip, ndjson, mysql, mysql_with_table, pgsql, pgsql_with_table, mongo. Example: ?format=csv
pretty string non Pretty-print JSON (set to 1 for json/gzip/zip formats). Example: ?format=json&pretty=1

Exemple de requête

curl -H "X-Api-Key: YOUR_API_KEY" \
  "https://www.steamwebapi.com/steam/api/item?market_hash_name=AK-47 | Redline (Field-Tested)&currency=EUR&with_groups="

Réponses

  • 200 Request was successful, and item details are returned.
  • 400 Missing `market_hash_name` parameter.
  • 404 Item not found. Ensure the `market_hash_name` is correct.
  • 429 Rate limit exceeded.
GET /steam/api/history

📈 Price History of an Item with Daily Prices from Steam or Real Market Data

Baseurl: https://www.steamwebapi.com/steam/api/history?key=YOUR_API_KEY&market_hash_name=ITEM_NAME 💬 **What this endpoint does:** - Retrieves the price history of an item based on specified parameters. - 🗓️ Provides daily prices from Steam or real market prices if `markets` is passed as origin parameter. 🛠️ **Parameters:** - **`key`**: Your API key located in the Dashboard (top-right corner). - **`market_hash_name`**: The `market_hash_name` of the item (required). - **`origin`**: Specify the data source. Default is `steamwebapi`. Use `markets` for real market price history or `direct` for direct Steam API access. - **`interval`**: Interval for data retrieval in days. Default: `10`. - **`start_date`**: Start date for data retrieval (format: YYYY-MM-DD). - **`end_date`**: End date for data retrieval (format: YYYY-MM-DD). ⚡ **Important:** - Use the `interval` parameter for optimized data queries. - Specifying `markets` in `origin` results in slower responses but provides detailed real market data. - Using `direct` origin provides direct access to Steam API data.

Paramètres

Nom Type Requis Description
key string oui Your API key for authentication. Retrieve it from your Dashboard (top-right corner).
market_hash_name string oui The `market_hash_name` of the item. Example: "AK-47 | Redline (Field-Tested)".
origin string non Specify the data source. Options: `steamwebapi` (default), `markets` for real market price history, or `direct` for direct Steam API access. ex. steamwebapi
interval string non Specify the interval for data retrieval in days. Default is `10`. ex. 10
start_date string non Specify the start date for data retrieval. Format: `YYYY-MM-DD`. ex. 2024-01-01
end_date string non Specify the end date for data retrieval. Format: `YYYY-MM-DD`. ex. 2024-12-31
production string non If you run in production, please set this to 1. Default is 0. This is in future required, and if not set, you will get a warning.
format string non Response format: json (default), csv, xml, html, gzip, zip, ndjson, mysql, mysql_with_table, pgsql, pgsql_with_table, mongo. Example: ?format=csv
pretty string non Pretty-print JSON (set to 1 for json/gzip/zip formats). Example: ?format=json&pretty=1

Exemple de requête

curl -H "X-Api-Key: YOUR_API_KEY" \
  "https://www.steamwebapi.com/steam/api/history?origin=steamwebapi&interval=10&start_date=2024-01-01&end_date=2024-12-31"

Réponses

  • 200 Request was successful, and price history is returned.
  • 400 Invalid start or end date provided.
POST /steam/api/items/history

📈 Get Daily Aggregated Price History for multiple Items

Baseurl: https://www.steamwebapi.com/steam/api/items/history?markets=steam,dmarket,skinport&game=cs2&key=YOUR_API_KEY 💬 **What this endpoint does:** - Aggregates historical price data for any items over time. - Returns daily aggregated data showing total worth and item count. - Uses the lowest positive daily close from exactly the requested markets. `steam` can be combined with third-party market idents. - Each request costs 1 credit regardless of the number of items. 🌐 **How to use:** - Send `items` as legacy market-hash-name strings or objects with `market_hash_name`, optional `phase`, optional `paint_index`, and optional `count`. - Specify selected market idents as a comma-separated `markets` value in the query or request body. The query value wins when both are provided. Omitting it defaults to Steam. - The endpoint returns daily aggregated worth after resolving the selected markets for every item and day. - Duplicate items in the array are counted separately (e.g., 2x "AK-47 | Redline" = 2x price). - For phase-aware objects, third-party prices must match the exact phase; Steam remains a valid generic candidate. - Before the first exact phase snapshot, phase-aware items use the lowest generic Doppler history from the selected markets. From the first exact snapshot onward, third-party candidates must match the phase; Steam remains generic. 📊 **Use Cases:** - **Inventory Tracking:** Track your Steam inventory value over time by sending all your item names - **Portfolio Analysis:** Monitor the performance of specific item collections or investment portfolios - **Watchlist Monitoring:** Track price trends for items you're interested in buying or selling - **Market Research:** Compare historical performance between different item categories or rarities - **Trading Strategies:** Analyze price movements for items in your trading pool

Paramètres

Nom Type Requis Description
key string oui Your API key for authentication. Retrieve it from your Dashboard (top-right corner).
markets string non Optional comma-separated market idents, for example `steam,dmarket,skinport`. The lowest positive daily close from exactly these markets is used. Defaults to `steam` when omitted. ex. steam,dmarket,skinport
game string non Optional. Game shortname. Default: cs2. Available: cs2, csgo, dota, rust ex. cs2
from_date string non Optional. Start date for filtering history (Y-m-d format, e.g., 2025-01-01). If not provided, returns all available history from the beginning. ex. 2025-01-01
to_date string non Optional. End date for filtering history (Y-m-d format, e.g., 2025-01-31). If not provided, returns up to the current date. ex. 2025-01-31
strategy string non Optional. Price aggregation strategy: - `PAST_PRICE`: Uses the last known price before or on the given date - `PAST_FUTURE_PRICE`: Uses the last known price before the given date, or the first known price after the given date if none exists before. Before exact phase history begins, phase-aware items use the selected markets' generic Doppler history instead of projecting a future exact phase backwards. - `SAME_DATE`: Uses the price on the given date, or the nearest available price (previous or next day) - `STRICT`: Uses the price only if it exists on the exact date, otherwise returns no data for that day - `NEAREST`: Uses the nearest available price (previous or next) to the given date ex. PAST_PRICE
format string non Response format: json (default), csv, xml, html, gzip, zip, ndjson, mysql, mysql_with_table, pgsql, pgsql_with_table, mongo. Example: ?format=csv
pretty string non Pretty-print JSON (set to 1 for json/gzip/zip formats). Example: ?format=json&pretty=1

Exemple de requête

curl -H "X-Api-Key: YOUR_API_KEY" \
  "https://www.steamwebapi.com/steam/api/items/history?markets=steam,dmarket,skinport&game=cs2&from_date=2025-01-01&to_date=2025-01-31&strategy=PAST_PRICE"

Réponses

  • 200 Daily aggregated history returned successfully.
  • 400 Invalid items, markets, dates, or aggregation strategy.
  • 404 Game not found.
GET /steam/api/items/preview

🔍 Preview CS2 Items - Lightweight Metadata (No Prices)

Baseurl: https://www.steamwebapi.com/steam/api/items/preview?key=YOUR_API_KEY 💬 **What this endpoint does:** - Returns a lightweight preview of CS2 items without pricing data. - Intended for fast access to item metadata and newly available items. - For full item details including pricing, prefer using `/steam/api/items`. 🛠️ **Features:** - Search items by name using `search` parameter (case-insensitive). - Filter by `paint_index` or `def_index` for specific weapons/skins. - Group results using `groupBy` to get unique values (e.g., all item types). - Combine phase variants with `grouped=true` (default); unrelated items with the same display name remain separate. - Returns only skin IDs by default; use `show_all=1` to include other catalog categories. - Marks database-missing items with `preview=true` and `new=true`. - Also marks items without a live Steam image with `new=true`; their image is served through the SteamWebAPI image proxy. - Marks items sold for the first time within 30 days with `recent=true`. - Filter only items with phases using `only_phases=true`. - Supports multiple output formats via `format` parameter. 🌐 **How to use:** - Basic call: `GET /steam/api/items/preview?key=YOUR_KEY` - Search: `GET /steam/api/items/preview?search=AK-47&key=YOUR_KEY` - Filter by weapon: `GET /steam/api/items/preview?def_index=7&key=YOUR_KEY` - Get all item types: `GET /steam/api/items/preview?groupBy=itemtype&key=YOUR_KEY` - Export as CSV: `GET /steam/api/items/preview?format=csv&key=YOUR_KEY`

Paramètres

Nom Type Requis Description
key string oui Your API key for authentication. Retrieve it from your Dashboard (top-right corner).
search string non Optional. Search for items by name (case-insensitive). Matches partial names. - Example: `search=AK-47` returns all AK-47 skins. - Example: `search=Redline` returns all Redline skins across weapons. ex. AK-47
paint_index integer non Optional. Filter by paint index (skin pattern ID). - Each skin has a unique paint_index. - Example: `282` = Redline, `418` = Doppler Phase 1. ex. 282
def_index integer non Optional. Filter by definition index (weapon ID). - Each weapon type has a unique def_index. - Common values: `7` = AK-47, `9` = AWP, `4` = Glock-18, `61` = USP-S. ex. 7
grouped boolean non Optional. Combine phase variants (default: true). - `true`: Returns one entry per phased market hash name with a `variants` array. - Same-name items without phases remain separate because they may represent distinct levels or editions. - `false`: Returns all variants as separate entries. ex. 1
groupBy string non Optional. Group results by a field and return unique values only. - Response becomes a flat array of strings/numbers. - Example: `?groupBy=itemtype` returns `["ak-47", "awp", "m4a1-s", ...]` - Example: `?groupBy=rarity` returns `["Covert", "Classified", "Restricted", ...]` ex. itemtype
format string non Optional. Output format for the response. - `json` (default): Standard JSON response. - `csv`, `xml`, `html`: Export formats for data analysis. - `gzip`, `zip`: Compressed JSON for large datasets. - `mysql`, `pgsql`, `mongo`: Database insert statements. ex. json
pretty string non Optional. Pretty-print JSON output (indented, human-readable). - `0` (default): Minified JSON. - `1`: Indented, formatted JSON. ex. 0
show_all boolean non Optional. Control which CS2 catalog categories are returned. - `0` or omitted: Return only items whose catalog ID starts with `skin-`. - `1`: Return all supported catalog categories. Globally ignored prefixes remain excluded. ex.
preview boolean non Optional. Filter by database availability. - `0` or omitted: Return the complete catalog with `preview` and `new` flags. - `1`: Return only items that do not yet exist in the item database for CS2. ex.
only_phases boolean non Optional. Only return items that have phases. - Useful for filtering Doppler, Gamma Doppler, Marble Fade knives. - Returns items with Phase 1, Phase 2, Phase 3, Phase 4, Ruby, Sapphire, etc. ex.

Exemple de requête

curl -H "X-Api-Key: YOUR_API_KEY" \
  "https://www.steamwebapi.com/steam/api/items/preview?search=AK-47&paint_index=282&def_index=7&grouped=1&groupBy=itemtype&format=json&pretty=0&show_all=&preview=&only_phases="

Réponses

  • 200 CS2 items matching the filters. Returns item metadata without pricing. When `grouped=true` (default), items with multiple phases include a `variants` array.
  • 400 Invalid request parameters.
  • 500 Internal server error or upstream API unavailable.
  • 503 The Redis-backed database availability snapshot is temporarily unavailable.
GET /steam/api/itemordersactivity

📦 Retrieve Realtime Order Activity for a Steam Item

Baseurl: https://www.steamwebapi.com/steam/api/itemordersactivity?key=YOUR_API_KEY&nameid=UNIQUE_NAMEID 💬 **What this endpoint does:** - Retrieves order activity details for a specified Steam item. - Includes information such as: - 🌍 Regional data based on country code. - 🗣️ Language-specific details. - 💲 Price information in the specified currency. 🛠️ **How to use:** - Provide the `market_hash_name` parameter to specify the item. - Optionally, customize the `country`, `language`, and `currency` parameters for tailored results.

Paramètres

Nom Type Requis Description
key string oui Your API key for authentication. Retrieve it from your Dashboard (top-right corner).
market_hash_name string oui Required. The `market_hash_name` of the item. Example: `AK-47 | Redline (Field-Tested)`. ex. AK-47 | Redline (Field-Tested)
country string non Country code for regional data. Optional. Default is `EN`. ex. US
language string non Language code for localization. Optional. Default is `english`. ex. english
currency string non Currency code for prices. Optional. Default is `1` (USD). ex. 1
production string non If you run in production, please set this to 1. Default is 0. This will be required in the future, and if not set, you will get a warning.
format string non Response format: json (default), csv, xml, html, gzip, zip, ndjson, mysql, mysql_with_table, pgsql, pgsql_with_table, mongo. Example: ?format=csv
pretty string non Pretty-print JSON (set to 1 for json/gzip/zip formats). Example: ?format=json&pretty=1

Exemple de requête

curl -H "X-Api-Key: YOUR_API_KEY" \
  "https://www.steamwebapi.com/steam/api/itemordersactivity?market_hash_name=AK-47 | Redline (Field-Tested)&country=US&language=english&currency=1"

Réponses

  • 200 Request was successful
  • 400 Invalid parameters provided.
  • 404 Item not found.
  • 502 Failed to fetch data from Steam API.

Info

Métadonnées d'items, conversion de SteamID, métadonnées de marché, collections CS2 et conversion de devises.

9 points de terminaison
GET /steam/api/info/items

📋 Get Item Metadata - Groups, Types, and Names

Baseurl: https://www.steamwebapi.com/steam/api/info/items?key=YOUR_API_KEY&game=cs2 💬 **What this endpoint does:** - Retrieves structured item metadata for a specific game. - Returns all available item groups, types, and names. - Provides hierarchical data for building item selectors and filters. 🛠️ **Features:** - **Structured mode** (default): Hierarchical group → type → name structure. - **Groups mode**: List of all item categories (knife, rifle, pistol, etc.). - **Types mode**: List of all weapon types (ak-47, awp, karambit, etc.). - **Items mode**: List of all skin names (doppler, fade, asiimov, etc.). - 24-hour caching for optimal performance. 🌐 **How to use:** - Get structured data: `GET /steam/api/info/items?key=YOUR_KEY` - Get all groups: `GET /steam/api/info/items?key=YOUR_KEY&type=groups` - Get all types: `GET /steam/api/info/items?key=YOUR_KEY&type=types` - Get all names: `GET /steam/api/info/items?key=YOUR_KEY&type=items` - Force refresh: `GET /steam/api/info/items?key=YOUR_KEY&no_cache=1` 📊 **Use Cases:** - Build dynamic item filters for your application. - Create autocomplete search functionality. - Generate item category navigation menus.

Paramètres

Nom Type Requis Description
key string oui Your API key for authentication. Required for all requests.
game string non Game identifier. **Supported games:** - `cs2` (default): Counter-Strike 2 - `rust`: Rust - `dota`: Dota 2 - `tf2`: Team Fortress 2 ex. cs2
type string non Type of data to return. **Options:** - `structed` (default): Hierarchical structure (group → type → items) - `groups`: Flat list of item groups (knife, rifle, etc.) - `types`: Flat list of weapon types (ak-47, awp, etc.) - `items`: Flat list of skin names (doppler, fade, etc.) ex. structed
no_cache string non Bypass 24-hour cache and fetch fresh data. - Omit or `0`: Use cached data (recommended) - `1`: Force fresh data fetch **Note:** Fresh fetch is slower, use only when necessary. ex. 0
format string non Output format. See /steam/api/items for all format options.
pretty string non Pretty-print JSON output.

Exemple de requête

curl -H "X-Api-Key: YOUR_API_KEY" \
  "https://www.steamwebapi.com/steam/api/info/items?game=cs2&type=structed&no_cache=0"

Réponses

  • 200 Item metadata returned successfully. Structure depends on `type` parameter.
  • 404 Game not found.
  • 429 Rate limit exceeded. Please wait before making more requests.
GET /steam/api/info/steamid

🔄 Convert a SteamID into Multiple Formats

Baseurl: https://www.steamwebapi.com/steam/api/info/steamid?key=YOUR_API_KEY&steam_id=STEAM_ID 💬 **What this endpoint does:** - Converts a SteamID into different formats: - SteamID2. - SteamID3. - SteamID64. - Returns the result as JSON. 🛠️ **Features:** - Supports all major SteamID formats for conversion. - Simple and efficient conversion for fast integration. 🌐 **How to use:** - Provide a valid `steam_id` in any format (`SteamID2`, `SteamID3`, or `SteamID64`). - Use your API key to authenticate the request.

Paramètres

Nom Type Requis Description
steam_id string oui The SteamID to convert. Accepted formats: - `SteamID2`: e.g., `STEAM_0:0:553498XXX`. - `SteamID3`: e.g., `[U:1:1106997XXX]`. - `SteamID64`: e.g., `76561199067263XXX`.
key string non Your API key for authentication. Retrieve it from your Dashboard (top-right corner).

Exemple de requête

curl -H "X-Api-Key: YOUR_API_KEY" \
  "https://www.steamwebapi.com/steam/api/info/steamid"

Réponses

  • 200 Request was successful, and the converted SteamID formats are returned.
  • 400 Missing or invalid `steam_id` parameter.
  • 404 The provided `steam_id` is invalid.
GET /steam/api/cs/containers

🎯 Retrieve All CS2/CS:GO Containers and Collections

Baseurl: https://www.steamwebapi.com/steam/api/cs/containers 💬 **What this endpoint does:** - Retrieves all containers and their collections from CS2/CS:GO. - Provides a comprehensive list of cases, stickers, and other containers. 🛠️ **Features:** - Supports filtering by container type (`all`, `sticker`, `case`, `package). - Enables searching for specific cases using the `search` parameter. - Results can be sorted by name, price, or release date. 🌐 **How to use:** - Use the `type` parameter to specify the group of containers to fetch. - Optionally, apply the `search` and `sortBy` parameters to refine your results.

Paramètres

Nom Type Requis Description
type string oui Show only this group of containers. Accepted values: `all`, `sticker`, `case`.
key string non Your API key for authentication. Retrieve it from your Dashboard (top-right corner).
search string non Search for a specific case or container by name.
sortBy string non Sort the result by a specific criterion. Options: - `nameAz`: Name ascending. - `nameZa`: Name descending. - `priceSteamAz`: Steam price ascending. - `priceSteamZa`: Steam price descending. - `priceRealAz`: Real market price ascending. - `priceRealZa`: Real market price descending. - `releasedatAz`: Release date ascending. - `releasedatZa`: Release date descending.
format string non Response format: json (default), csv, xml, html, gzip, zip, ndjson, mysql, mysql_with_table, pgsql, pgsql_with_table, mongo. Example: ?format=csv
pretty string non Pretty-print JSON (set to 1 for json/gzip/zip formats). Example: ?format=json&pretty=1

Exemple de requête

curl -H "X-Api-Key: YOUR_API_KEY" \
  "https://www.steamwebapi.com/steam/api/cs/containers"

Réponses

  • 200 Request was successful, and all containers are returned.
  • 400 Missing or invalid parameters.
GET /steam/api/cs/collection/{slug}

🎯 Retrieve a CS2/CS:GO Collection or Case

Baseurl: https://www.steamwebapi.com/steam/api/cs/collection/{slug} 💬 **What this endpoint does:** - Retrieves a list of all collections and their items (skins) from CS2/CS:GO. - Provides detailed information about a specific collection or case. 🛠️ **Features:** - Fetches all items (skins) belonging to a specific collection or case. - Supports both CS2 and CS:GO collections. 🌐 **How to use:** - Replace `{slug}` with the collection's unique identifier to fetch the desired data.

Paramètres

Nom Type Requis Description
key string oui Your API key for authentication. Retrieve it from your Dashboard (top-right corner).
slug string oui
format string non Response format: json (default), csv, xml, html, gzip, zip, ndjson, mysql, mysql_with_table, pgsql, pgsql_with_table, mongo. Example: ?format=csv
pretty string non Pretty-print JSON (set to 1 for json/gzip/zip formats). Example: ?format=json&pretty=1

Exemple de requête

curl -H "X-Api-Key: YOUR_API_KEY" \
  "https://www.steamwebapi.com/steam/api/cs/collection/{slug}"

Réponses

  • 200 Request was successful, and the collection data is returned.
  • 404 The specified collection or case was not found.
GET /steam/api/cs/collections

🎯 Retrieve all cs2 collections with items

Base URL: https://www.steamwebapi.com/steam/api/cs/collections 💬 **What this endpoint does:** - Retrieves a list of all CS2 and CS:GO collections. - Each collection includes detailed information about its items (skins) and containers (cases/capsules). 🛠️ **Features:** - Fetches all collections along with the associated skins. - Removes duplicate items within a collection based on `groupid`. - Includes container information (e.g., cases, souvenir packages). - Supports both CS2 and CS:GO collections. 🌐 **How to use:** - No body or path parameters needed. - Simply call the endpoint with your `key` as a query parameter. **Request URL Example:** `https://www.steamwebapi.com/steam/api/cs/collections?key=YOUR_API_KEY`

Paramètres

Nom Type Requis Description
key string oui Your API key for authentication. Retrieve it from your Dashboard (top-right corner).
select string non Select specific fields to return. Reduces response size and time. Example: "name,logo". Optional.
limit string non Limit the number of results returned. Default is 10000.
offset string non Offset for pagination. Default is 0.
no_cache string non Set to 1 to bypass cache and fetch fresh data. Default is 0.
format string non Response format: json (default), csv, xml, html, gzip, zip, ndjson, mysql, mysql_with_table, pgsql, pgsql_with_table, mongo. Example: ?format=csv
pretty string non Pretty-print JSON (set to 1 for json/gzip/zip formats). Example: ?format=json&pretty=1

Exemple de requête

curl -H "X-Api-Key: YOUR_API_KEY" \
  "https://www.steamwebapi.com/steam/api/cs/collections"

Réponses

  • 200 Request was successful, and all collections are returned.
  • 400 Missing or invalid parameters.
GET /steam/api/info/markets

📈 Get Supported Market Information

Baseurl: https://www.steamwebapi.com/steam/api/info/markets 💬 **What this endpoint does:** - Retrieves a list of all supported markets. - Provides information including: - 🖼️ Market logos. - 📛 Market names. - 📊 Relevant market data. 🛠️ **Features:** - Comprehensive data on supported markets for integration and analysis. - Up-to-date market details with structured responses. 🌐 **How to use:** - Use your API key to authenticate the request and access the data.

Paramètres

Nom Type Requis Description
key string oui Your API key for authentication. Retrieve it from your Dashboard (top-right corner).

Exemple de requête

curl -H "X-Api-Key: YOUR_API_KEY" \
  "https://www.steamwebapi.com/steam/api/info/markets"

Réponses

  • 200 Request was successful, and market information is returned.
  • 429 Rate limit exceeded. Too many requests in a short time frame.
GET /steam/api/complete/items

🔍 Auto-Complete Game Items - e.g for using on Input fields (for free)

Baseurl: https://www.steamwebapi.com/steam/api/complete/items?search=SEARCH_TERM&game=cs2 💬 **What this endpoint does:** - Provides real-time auto-completion for game items with search suggestions based on the input. - Retrieves a list of items matching the search term, making it ideal for input auto-completes. - Returns the **name and image URL** of each item to enhance the user experience. 🛠️ **Features:** - 🔍 Instantly retrieve search suggestions for game items with a minimum of 3 characters in the search term. - 🎮 Supports filtering by game for more relevant results. - 🖼️ Includes item **image URL** for a visual preview. - 🔑 No API key required for now, but in production, it is recommended to include your key for future compatibility. - 💰 This endpoint is currently free, but in the future, it will cost **1 request credit per 100 queries**, making it extremely affordable. ⚠️ **Note:** Future updates might require authentication, so ensure you are prepared for upcoming changes (just add your key).

Paramètres

Nom Type Requis Description
search string oui The search term for auto-completion. Must be at least 3 characters long.
key string non Your API key for authentication (optional but recommended for production use).
game string non Optional. Short name of the game (e.g., "cs2", "dota2", "rust"). Default is "cs2".

Exemple de requête

curl -H "X-Api-Key: YOUR_API_KEY" \
  "https://www.steamwebapi.com/steam/api/complete/items"

Réponses

  • 200 Successfully retrieved auto-complete suggestions.
GET /currency/api/list

💱 List All Available Currencies for Conversion

Baseurl: https://www.steamwebapi.com/currency/api/list?key=YOUR_API_KEY&base=USD 💬 **What this endpoint does:** - Retrieves a list of all available currencies for conversion. - The default base currency is USD (United States Dollar). - The data source is Steam by default but can be customized. 🛠️ **Features:** - Supports specifying a custom base currency using the `base` parameter. - Allows changing the data source via the `source` parameter. 🌐 **How to use:** - Use the `base` parameter to specify the currency code for conversion (e.g., `EUR`, `TRY`). - Optionally, set the `source` parameter to customize the data source.

Paramètres

Nom Type Requis Description
key string oui Your API key for authentication. Retrieve it from your Dashboard (top-right corner).
base string non The base currency code for conversion. If not specified, `USD` is used as the default. ex. EUR
source string non Specifies the source of the currency data. Default is `Steam`. ex. Steam
production string non If you run in production, please set this to 1. Default is 0. This is in future required, and if not set, you will get a warning.
format string non Response format: json (default), csv, xml, html, gzip, zip, ndjson, mysql, mysql_with_table, pgsql, pgsql_with_table, mongo. Example: ?format=csv
pretty string non Pretty-print JSON (set to 1 for json/gzip/zip formats). Example: ?format=json&pretty=1

Exemple de requête

curl -H "X-Api-Key: YOUR_API_KEY" \
  "https://www.steamwebapi.com/currency/api/list?base=EUR&source=Steam"

Réponses

  • 200 Request was successful, and the list of currencies is returned.
  • 400 Invalid or missing parameters.
  • 429 Rate limit exceeded.
GET /currency/api/exchange

💱 Retrieve Currency Exchange Rates

Baseurl: https://www.steamwebapi.com/currency/api/exchange?key=YOUR_API_KEY&change=EUR&base=USD 💬 **What this endpoint does:** - Provides the exchange rate for a specified currency. - Allows you to specify: - The currency to convert to using the `change` parameter. - The base currency using the `base` parameter (default: USD). 🛠️ **Features:** - Fetches accurate exchange rates. - Supports all major currency codes based on the [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217) standard. 🌐 **How to use:** - Use the `change` parameter to specify the target currency (e.g., `EUR`, `TRY`, `RUB`). - Optionally, use the `base` parameter to specify the base currency. If omitted, the default is `USD`. 📋 **Example:** - `change=EUR&base=USD`: Convert USD to EUR.

Paramètres

Nom Type Requis Description
key string oui Your API key for authentication. Retrieve it from your Dashboard (top-right corner).
change string oui The target currency code to exchange to. Supported values follow the [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217) standard (e.g., `EUR`, `TRY`, `RUB`).
base string non The base currency for the exchange. Default is `USD`. Supported values follow the [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217) standard.
format string non Response format: json (default), csv, xml, html, gzip, zip, ndjson, mysql, mysql_with_table, pgsql, pgsql_with_table, mongo. Example: ?format=csv
pretty string non Pretty-print JSON (set to 1 for json/gzip/zip formats). Example: ?format=json&pretty=1

Exemple de requête

curl -H "X-Api-Key: YOUR_API_KEY" \
  "https://www.steamwebapi.com/currency/api/exchange"

Réponses

  • 200 Request was successful, and the exchange rate is returned.
  • 400 Invalid or missing parameters.
  • 429 Rate limit exceeded.

Assets

Recherche en masse d'assets CS2 par identité float/paint-seed et historique de possession par item.

2 points de terminaison
GET /api/assets

Récupérer des assets CS avec filtres et pagination

Baseurl: https://www.steamwebapi.com/api/assets?key=YOUR_API_KEY 💬 **Ce que fait ce point de terminaison :** - Renvoie plus d'un million d'assets CS (éléments d'inventaire et de marché) avec des options de filtrage flexibles. - Prend en charge une pagination puissante pour les grands ensembles de résultats. 🛠️ **Fonctionnalités :** - Filtrer par propriétaire (SteamID64), arme (def_index), skin (paint_index), plage de float, StatTrak, Souvenir, rareté, qualité, origine et paint_seed. - Filtrer par nom de hash de marché exact (market_hash_name). - Filtrer uniquement les assets appartenant à des profils Steam ou uniquement les annonces du marché. - Filtrer les assets ayant des stickers et/ou des porte-clés. - Réponses paginées via limit et offset. 🌐 **Comment l'utiliser :** - Tous les paramètres de requête utilisent la notation snake_case. - Combinez plusieurs paramètres de filtre selon vos besoins (par exemple steam_id + def_index + min_float/max_float). - Utilisez offset pour la pagination (par exemple offset=50 pour la page 2 avec limit=50). - Par défaut, le point de terminaison renvoie un nombre limité d'assets par requête (configurable via le paramètre limit). - Également accessible via l'ancien chemin `/steam/api/float/assets` — comportement identique, conservé pour la rétrocompatibilité.

Paramètres

Nom Type Requis Description
key string oui Votre clé API pour l'authentification. Récupérez-la depuis votre tableau de bord (coin supérieur droit).
steam_id string non Filtrer par SteamID64 du propriétaire, par exemple 76561198042843401.
market_hash_name string non Filtrer par nom de hash de marché exact, par exemple "AK-47 | Uncharted (Factory New)".
def_index integer non Filtrer par indice de définition de l'arme, par exemple 7 pour l'AK-47.
paint_index integer non Filtrer par indice de peinture / ID de skin, par exemple 836 pour "AK-47 | Uncharted".
float string non Recherche exacte de float (usure), par exemple 0.030868796632. Correspond à la valeur avec la précision que vous fournissez : la tolérance est d'une unité sur la dernière décimale envoyée, de sorte qu'un float arrondi/affiché retrouve la valeur stockée (0.030868796631694) au lieu de ne rien renvoyer. Envoyez plus de décimales pour restreindre la correspondance, moins pour l'élargir — 0.030868796632 recherche ±1e-12, tandis que 0.03 recherche ±0.01. Préférez ceci à min_float=X&max_float=X, qui compare les valeurs Float64 brutes et manque donc les entrées arrondies.
min_float number non Valeur de float (usure) minimale incluse, par exemple 0.00 pour le début de la plage Factory New.
max_float number non Valeur de float (usure) maximale incluse, par exemple 0.07 pour la fin de la plage Factory New.
is_stattrak integer non Filtrer par statut StatTrak (1 = StatTrak, 0 = non-StatTrak).
is_souvenir integer non Filtrer par statut Souvenir (1 = Souvenir, 0 = non-Souvenir).
rarity integer non Filtrer par niveau de rareté. Les valeurs typiques vont de 1 à 6 (par exemple 6 = Covert).
quality integer non Filtrer par qualité d'item, par exemple 4 = normal, 9 = spécifique à la rareté.
origin string non Filtrer par origine telle que drop, market-purchase ou case-reward.
paint_seed integer non Filtrer par paint seed / numéro de motif exact, par exemple 915.
wear string non Filtrer par code de catégorie d'usure : fn (Factory New), mw (Minimal Wear), ft (Field-Tested), ww (Well-Worn), bs (Battle-Scarred). Insensible à la casse.
phase string non Filtrer par phase Doppler / Gamma, par exemple "p1", "p2", "p3", "p4", "ruby", "sapphire", "black-pearl", "emerald".
source string non Filtrer par source d'ingestion. Exemples : "inventory" (collecté via le point de terminaison /inventory), "csfloat", "youpin" (scrapers de marchés tiers).
asset_id string non Filtrer par ID d'asset Steam exact (ID d'inventaire) — utile pour des recherches directes.
date string non Filtrer par date calendaire de création de l'asset. Accepte les dates ISO (AAAA-MM-JJ) ou le format local tel que 31.12.2025.
sort string non Ordre de tri. Valeurs prises en charge : newest, oldest, lowest_float, highest_float. Par défaut newest.
limit integer non Nombre de résultats à renvoyer. Par défaut 10, la limite supérieure dépend de votre forfait.
offset integer non Décalage pour la pagination, par exemple 50 pour la page 2 avec limit=50.
only_steam_id integer non Si défini sur 1, seuls les assets avec un propriétaire SteamID64 sont renvoyés.
only_market_id integer non Si défini sur 1, seuls les assets sans propriétaire SteamID64 (annonces de marché) sont renvoyés.
with_stickers integer non Si défini sur 1, seuls les assets ayant au moins un sticker sont renvoyés.
with_keychains integer non Si défini sur 1, seuls les assets ayant au moins un porte-clé sont renvoyés.
with_items integer non Si défini sur 1, enrichit chaque asset avec l'enregistrement d'item correspondant de la base de données d'items (jointure par market_hash_name). Le payload de l'item est exposé sous la clé "item".
with_profiles integer non Si défini sur 1, enrichit chaque asset avec le profil Steam correspondant (jointure par SteamID64). Le payload du profil est exposé sous la clé "profile".
format string non Format de réponse : json (défaut), csv, xml, html, gzip, zip, ndjson, mysql, mysql_with_table, pgsql, pgsql_with_table, mongo.

Exemple de requête

curl -H "X-Api-Key: YOUR_API_KEY" \
  "https://www.steamwebapi.com/api/assets"

Réponses

  • 200 La requête a réussi et les assets sont renvoyés.
  • 400 Type de paramètre de requête invalide.
  • 402 Limite de débit dépassée (quotidienne ou mensuelle).
POST /api/assets/find

Recherche en masse de l'historique de possession d'assets CS2 par identité float et/ou paint-seed

Baseurl: https://www.steamwebapi.com/api/assets/find?key=YOUR_API_KEY 💬 **Ce que fait ce point de terminaison :** - Recherche des items CS2 selon n'importe quelle combinaison de float, def_index et paint_seed, et renvoie la chronologie complète de possession de chaque item physique correspondant — chaque précédent propriétaire SteamID64 et chaque annonce de marché intermédiaire, du plus ancien au plus récent. 🛠️ **Comment fonctionne la correspondance d'identité :** - Un item CS2 physique conserve toujours la même combinaison (def_index, paint_seed, float), même si son asset_id et son propriétaire changent à chaque trade. Envoyez les trois pour cibler exactement un item ; envoyez-en moins pour obtenir tous les items correspondants. - Combinaisons acceptées : `float` seul, `def_index` + `paint_seed`, ou tout mélange des trois. `def_index` seul ou `paint_seed` seul est refusé — chacun correspondrait à des centaines de milliers de lignes, rendant la réponse inutile. - `float` est comparé à la précision que vous envoyez, donc un float arrondi/affiché retrouve tout de même la valeur stockée (12 décimales ≈ ±1e-12 ; moins de décimales élargit la correspondance). Au moins 6 décimales sont requises. - `paint_index` est un filtre supplémentaire, jamais une clé de recherche à lui seul. - Les noms de champs sont acceptés dans les deux orthographes : `def_index` / `paint_seed` / `paint_index` comme documenté, et `defindex` / `paintseed` / `paintindex` tels qu'ils apparaissent dans la réponse — une identité peut donc être copiée directement depuis un résultat précédent. - La couverture est inhérente, pas un bug : un item n'a un historique que si cette plateforme l'a suivi sous un précédent propriétaire. Les items dont le premier propriétaire est toujours l'actuel reviennent avec une seule entrée de propriétaire. 🌐 **Comment l'utiliser :** - Envoyez un corps JSON en POST : `{"items": [{"float": "0.030868796632", "def_index": 7, "paint_seed": 915, "ref": "my-id"}, ...]}`. - Chaque entrée répond avec `matched` (nombre d'items physiques correspondants) et `items` (une chronologie chacun). Un triplet complet donne `matched: 1` ; une clé partielle peut en donner plusieurs. - Au maximum 25 items sont renvoyés par entrée. `truncated: true` indique qu'il y en avait davantage — affinez la clé pour les voir. - `data` a toujours la même longueur que les `items` envoyés, dans le même ordre. `ref` est optionnel, renvoyé tel quel, et constitue le moyen le plus sûr de corréler. - Passez `steam_id` (SteamID64) pour indiquer quel propriétaire dans chaque chronologie est l'actuel ; s'il est omis, le segment de propriétaire le plus récent est considéré comme actuel. - Les entrées malformées ne font jamais échouer le lot entier — elles reviennent individuellement avec `status: "invalid"` et une raison. - Crédits : 1 par entrée envoyée, quel que soit le nombre d'items correspondants (found, not_found et invalid comptent tous).

Paramètres

Nom Type Requis Description
key string oui Votre clé API pour l'authentification. Récupérez-la depuis votre tableau de bord (coin supérieur droit).

Exemple de requête

curl -H "X-Api-Key: YOUR_API_KEY" \
  "https://www.steamwebapi.com/api/assets/find"

Réponses

  • 200 La requête a réussi.
  • 400 items n'a rien donné d'exploitable, par exemple "items": null.
  • 402 Limite de débit dépassée (quotidienne ou mensuelle), ou point de terminaison non inclus dans votre forfait.
  • 421 Le corps de la requête est manquant ou n'est pas du JSON valide.
  • 422 Échec de validation du corps : items vide, pas un tableau ou plus de 5000 entrées, ou steam_id n'est pas un SteamID64. La réponse liste chaque champ en échec.
  • 429 Trop de requêtes par minute pour cette clé API — voir config/packages/rate_limiter.yaml (assets_find).

Float

Décodage des valeurs de float des skins CS2, génération de liens d'inspection et rendu de captures d'écran.

4 points de terminaison
GET /steam/api/float/assets

Legacy alias of GET /api/assets — retrieve CS assets with filters and pagination

Legacy path for this operation. Use `GET /api/assets` instead — same filters, same response, same credits. Kept working indefinitely for existing integrations.

Paramètres

Nom Type Requis Description
key string oui Your API key for authentication. Retrieve it from your Dashboard (top-right corner).
steam_id string non Filter by SteamID64 of the owner, for example 76561198042843401.
market_hash_name string non Filter by exact market hash name, for example "AK-47 | Uncharted (Factory New)".
def_index integer non Filter by weapon definition index, for example 7 for AK-47.
paint_index integer non Filter by paint index / skin ID, for example 836 for "AK-47 | Uncharted".
float string non Exact float (wear) lookup, for example 0.030868796632. Matches the value at the precision you supply: the tolerance is one unit in the last decimal place you send, so a displayed/rounded float finds the stored asset (0.030868796631694) instead of returning nothing. Send more decimals to narrow the match, fewer to widen it — 0.030868796632 searches ±1e-12, while 0.03 searches ±0.01. Prefer this over min_float=X&max_float=X, which compares raw Float64 values and therefore misses rounded input.
min_float number non Minimum float value (wear) inclusive, for example 0.00 for Factory New range start.
max_float number non Maximum float value (wear) inclusive, for example 0.07 for Factory New range end.
is_stattrak integer non Filter by StatTrak status (1 = StatTrak, 0 = non-StatTrak).
is_souvenir integer non Filter by Souvenir status (1 = Souvenir, 0 = non-Souvenir).
rarity integer non Filter by rarity tier. Typical values are in the range 1-6 (for example 6 = Covert).
quality integer non Filter by item quality, for example 4 = normal, 9 = rarity-specific.
origin string non Filter by origin such as drop, market-purchase or case-reward.
paint_seed integer non Filter by exact paint seed / pattern number, for example 915.
wear string non Filter by wear category code: fn (Factory New), mw (Minimal Wear), ft (Field-Tested), ww (Well-Worn), bs (Battle-Scarred). Case-insensitive.
phase string non Filter by Doppler / Gamma phase, for example "p1", "p2", "p3", "p4", "ruby", "sapphire", "black-pearl", "emerald".
source string non Filter by ingestion source. Examples: "inventory" (collected via /inventory endpoint), "csfloat", "youpin" (third-party marketplace scrapers).
asset_id string non Filter by exact Steam asset id (inventory id) — useful for direct lookups.
date string non Filter by calendar date when the asset was created. Accepts ISO dates (YYYY-MM-DD) or local format such as 31.12.2025.
sort string non Sort order. Supported values: newest, oldest, lowest_float, highest_float. Default is newest.
limit integer non Number of results to return. Default is 10, upper limit depends on your plan.
offset integer non Offset for pagination, for example 50 for page 2 when limit=50.
only_steam_id integer non If set to 1, only assets with a SteamID64 owner are returned.
only_market_id integer non If set to 1, only assets without a SteamID64 owner (market listings) are returned.
with_stickers integer non If set to 1, only assets that have at least one sticker are returned.
with_keychains integer non If set to 1, only assets that have at least one keychain are returned.
with_items integer non If set to 1, enrich each asset with the matching item record from the items database (joined by market_hash_name). The item payload is exposed under the "item" key.
with_profiles integer non If set to 1, enrich each asset with the matching Steam profile (joined by SteamID64). The profile payload is exposed under the "profile" key.
format string non Response format: json (default), csv, xml, html, gzip, zip, ndjson, mysql, mysql_with_table, pgsql, pgsql_with_table, mongo.

Exemple de requête

curl -H "X-Api-Key: YOUR_API_KEY" \
  "https://www.steamwebapi.com/steam/api/float/assets"

Réponses

  • 200 Request was successful and the assets are returned.
  • 400 Invalid query parameter type.
  • 402 Rate limit exceeded (daily or monthly).
GET /steam/api/float

🔍 Retrieve Float Information for an Item

Baseurl: https://www.steamwebapi.com/steam/api/float?key=YOUR_API_KEY&url=INSPECT_LINK 💬 **What this endpoint does:** - Retrieves float information for a specific CS:GO / CS2 item by decoding the inspect certificate in-process. - Requires either the `url` parameter (full inspect link) or the `certificate` parameter (raw hex certificate). ⚠️ **Important — legacy format no longer supported:** Valve discontinued the old inspect link formats `S{steamid}A{assetid}D{value}` (personal inventory) and `M{marketid}A{assetid}D{value}` (market listing) when they shut down the public Game Coordinator endpoint. Those links carried no float data on their own — they were only reference IDs, and float retrieval relied on a Steam GC roundtrip that no longer exists. **Any URL matching the old S/M pattern will return HTTP 406.** Only the new certificate format works. 🆕 **Certificate format:** The new format embeds the full item state (float, paintseed, paintindex, stickers, keychains, StatTrak kill count, name tag, …) as a hex-encoded protobuf payload right inside the inspect link. No external lookup, no bot, no GC roundtrip — the certificate IS the data. - Full URL form: `steam://run/730//+csgo_econ_action_preview ` - Raw form (pass via `certificate=`): `` (e.g. `49598AF087A6F948...`) 🌐 **How to use:** - Pass the inspect link via `url=` or the raw hex via `certificate=` — exactly one of the two is required. - Inspect links can be obtained from our Inventory API (`/steam/api/inventory`) — the `inspectlink` field there is always in the supported certificate format. - Authenticate with your API key.

Paramètres

Nom Type Requis Description
key string oui Your API key for authentication. Retrieve it from your Dashboard (top-right corner).
url string non Inspect link in the **certificate format only**. Example: `steam://run/730//+csgo_econ_action_preview%203C2CD7CEF39C8E...`. The legacy `S{steamid}A{assetid}D{value}` and `M{marketid}A{assetid}D{value}` formats were discontinued by Valve and **will return HTTP 406** — they no longer carry retrievable float data. Either `url` or `certificate` is required.
certificate string non Raw hex certificate without the `steam://run/730//+csgo_econ_action_preview+` prefix. Example: `49598AF087A6F948...`. This is the encoded protobuf payload that carries the entire item state (float, paintseed, stickers, …). Either `url` or `certificate` is required.
production string non If you run in production, please set this to 1. Default is 0. This is in future required, and if not set, you will get a warning.
format string non Response format: json (default), csv, xml, html, gzip, zip, ndjson, mysql, mysql_with_table, pgsql, pgsql_with_table, mongo. Example: ?format=csv
pretty string non Pretty-print JSON (set to 1 for json/gzip/zip formats). Example: ?format=json&pretty=1

Exemple de requête

curl -H "X-Api-Key: YOUR_API_KEY" \
  "https://www.steamwebapi.com/steam/api/float"

Réponses

  • 200 Request was successful, and the float data for the item is returned.
  • 402 Rate limit exceeded (daily or monthly).
  • 406 Inspect link is missing or uses a deprecated format. The legacy S/M-link formats (S{steamid}A{assetid}D{value}, M{marketid}A{assetid}D{value}) were discontinued by Valve and are no longer supported — only the certificate (hex) format is accepted.
  • 416 Service overloaded or unable to retrieve float information. Please try again later.
  • 417 Certificate could not be decoded — the inspect link or hex is likely malformed or corrupt.
  • 503 Certificate decoded but produced no usable item data (empty protobuf payload). The link is likely invalid or pointing to an item that no longer exists.
GET /steam/api/float/screenshot

🖼️ Generate Screenshot with Float Information

Generate a screenshot image with detailed float information for a specific CS:GO / CS2 item. The float data is decoded from the inspect certificate and rendered onto a customizable background; the response streams the resulting PNG directly to the client. ⚠️ **Same format rules as `/steam/api/float`:** only the certificate (hex) inspect link format is supported. The legacy S/M-link formats were discontinued by Valve and will return HTTP 406.

Paramètres

Nom Type Requis Description
key string oui API key for authentication. Retrieve it from your Dashboard.
url string oui Inspect link in the **certificate format only**. Example: `steam://run/730//+csgo_econ_action_preview%203C2CD7CEF39C8E...`. The legacy S/M-link formats (discontinued by Valve) will return HTTP 406.
as_base64 string non Set to 1 to return the image as a base64 string. Default is 0, base64 is sometimes helpful for easier integration.
color string non Color scheme for the screenshot. Options: black, blue, green, orange, purple, red, white, yellow, gray. Default: green.
background_url string non Custom background image URL (PNG format). Overrides default background.
logo_url string non Custom logo image URL (PNG format). Overrides default logo.
logo_offset_start string non Logo start position. Options: top left, top right, bottom left, bottom right. Default: top left.
logo_offset_x string non Horizontal offset for the logo. Default: 80.
logo_offset_y string non Vertical offset for the logo. Default: 80.
logo_opacity string non Opacity of the logo (0 to 1). Default: 1.0.
logo_width string non Width of the logo in pixels (Max: 500). Default: 400.
format string non Send a format - screen (default) for show, download for download the image, base64 for base64 image.

Exemple de requête

curl -H "X-Api-Key: YOUR_API_KEY" \
  "https://www.steamwebapi.com/steam/api/float/screenshot"

Réponses

  • 200 The image has been successfully generated and streamed to the client.
  • 402 Rate limit exceeded. Too many requests have been made within the allowed period.
  • 404 The requested item could not be found. Verify the inspect link or database.
  • 406 Invalid parameters or inspect link provided. Ensure the inspect link is correct.
  • 416 Service is overloaded or unable to retrieve float information. Try again later.
  • 417 Unable to retrieve float information for the item. Verify the inspect link.
  • 424 The image stream failed due to an internal issue. Contact support if the problem persists.
POST /steam/api/float/create-inspectlink

🔗 Generate a CS2 inspect-link from raw item data

Baseurl: https://www.steamwebapi.com/steam/api/float/create-inspectlink?key=YOUR_API_KEY 💬 **What this endpoint does:** - Generates a fully self-contained CS2 inspect-link from raw item data — the inverse of the `GET /steam/api/float` decoder. - Output is compatible with our own decoder, csfloat's inspect tool, and every CS2 client that opens the link in-game. - No Steam game-coordinator round trip — the certificate hex carries the entire item state. 🛠️ **Use cases:** - Mock inspect-links for UI development and screenshots. - Reconstructing an inspect-link when only the raw item data is known (backfill, migration). - Generating links for items that never existed in any real inventory. 🌐 **How to use:** - POST a JSON body with at least `defindex`. All other fields default to 0/empty. - `quality` is auto-derived from `stattrak` / `souvenir` flags if you do not set it explicitly (4 / 9 / 12). - `stickers` (max 5), `keychains` (max 1) and `variations` (max 5) accept arrays of objects with `sticker_id` (required) plus any of `slot`, `wear`, `scale`, `rotation`, `pattern`, `tint_id`, `offset_x`, `offset_y`, `offset_z`. - Response includes the generated `inspectlink`, the raw `certificate` hex, and a `decoded` round-trip — so you can verify what the link will produce when re-decoded.

Paramètres

Nom Type Requis Description
key string oui Your API key for authentication. Retrieve it from your Dashboard (top-right corner).

Exemple de requête

curl -H "X-Api-Key: YOUR_API_KEY" \
  "https://www.steamwebapi.com/steam/api/float/create-inspectlink"

Réponses

  • 200 Inspect-link generated successfully.
  • 421 JSON payload contains unknown fields.
  • 422 Validation error (missing required field, value out of range, malformed sticker entry, etc.).

Explore

Exploration et recherche de profils Steam.

1 point de terminaison
GET /explore/api/profile

🔍 Rechercher et explorer des profils Steam

Baseurl: https://www.steamwebapi.com/explore/api/profile?key=YOUR_API_KEY&search=example 💬 **Ce que fait ce point de terminaison :** - Recherche des profils Steam selon divers critères tels que le nom, le pays, la valeur d'inventaire ou le statut VAC. - Par défaut, récupère 20 résultats par page triés par valeur d'inventaire décroissante. - Il s'agit du point de terminaison Explore unifié — il remplace les anciennes routes `/random`, `/last` et `/toplist`. 🛠️ **Fonctionnalités :** - Recherche en texte intégral sur le nom de persona, le nom de compte et le nom d'affichage. - Filtrer par code pays, valeur minimale, statut VAC, statut de renommée ou type de profil. - Pagination avec les paramètres `limit` (max 100) et `page` (1–10). - Tri flexible avec `order_by` : personaname, timecreated, fame, worth, size, updatedat, inventoryupdatedat, totalplaytime, random (chacun avec suffixe ASC/DESC le cas échéant). 💡 **Cas d'usage courants :** - **Profils aléatoires :** `order_by=random` - **Dernière mise à jour d'inventaire :** `order_by=inventoryupdatedatDESC` - **Dernière mise à jour :** `order_by=updatedatDESC` - **Top par valeur :** `order_by=worthDESC` (défaut) - **Recherche par nom :** `search=Shroud` 🌐 **Comment l'utiliser :** - Utilisez le paramètre `search` pour les recherches par nom (correspondance partielle prise en charge). - Combinez les filtres `country`, `worth`, `vac`, `fame` et `type` selon vos besoins. - Ajustez `limit` (max 100) et `page` (1–10) pour des résultats paginés. - Utilisez `order_by` pour contrôler le tri (défaut : worth DESC). 📦 **Champs de réponse :** steamid, accountname, personaname, displayname, profiletype, realname, loccountrycode, description, fame, vac, islimited, level, worth, worthsteam, size, peritem, totalplaytime, playtimerecent, timecreated, updatedat, inventoryupdatedat, avatar, avatarmedium, avatarfull

Paramètres

Nom Type Requis Description
key string oui Votre clé API pour l'authentification. Récupérez-la depuis votre tableau de bord (coin supérieur droit).
search string non Chaîne de recherche correspondant au nom de persona, au nom de compte ou au nom d'affichage (correspondance partielle, insensible à la casse). ex. Shroud
country string non Code pays ISO 3166-1 alpha-2 (par exemple DE, US, GB). ex. DE
worth number non Filtre de valeur d'inventaire minimale sous forme de valeur numérique (par exemple 1000 pour 1000 $). ex. 1000
type string non Filtrer par type de profil.
limit integer non Nombre de profils par page. Par défaut : 20. Maximum : 100. ex. 20
page integer non Numéro de page pour la pagination (1–10). Par défaut : 1. ex. 1
vac integer non Filtrer par statut de bannissement VAC. Définir sur 1 pour ne voir que les profils bannis VAC.
fame integer non Filtrer par statut de renommée. 1 = profils célèbres, 0 = profils non célèbres.
order_by string non Champ et direction de tri. Options : personaname, personanameASC, personanameDESC, timecreated, timecreatedASC, timecreatedDESC, fame, fameASC, fameDESC, worth (défaut), worthASC, worthDESC, size, sizeASC, sizeDESC, updatedat, updatedatASC, updatedatDESC, inventoryupdatedat, inventoryupdatedatASC, inventoryupdatedatDESC, totalplaytime, totalplaytimeASC, totalplaytimeDESC, random.
production string non Définir sur 1 si vous êtes en production. Par défaut : 0.
format string non Format de réponse : json (défaut), csv, xml, html, gzip, zip, ndjson, mysql, mysql_with_table, pgsql, pgsql_with_table, mongo. Exemple : ?format=csv
pretty string non Formater joliment la sortie JSON (définir sur 1). S'applique uniquement aux formats json, gzip et zip.

Exemple de requête

curl -H "X-Api-Key: YOUR_API_KEY" \
  "https://www.steamwebapi.com/explore/api/profile?search=Shroud&country=DE&worth=1000&limit=20&page=1"

Réponses

  • 200 Tableau d'objets de profil correspondants.
  • 400 Paramètres invalides ou manquants.
  • 429 Limite de débit dépassée.

Profile

Informations de profil Steam, listes d'amis, vérifications d'éligibilité aux échanges et notation de risque de compte (détection de smurf / compte secondaire).

6 points de terminaison
GET /steam/api/friendlist

👥 Retrieve a Steam User's Friendlist

Baseurl: https://www.steamwebapi.com/steam/api/friendlist?id=76561198012345678&key=YOUR_API_KEY 💬 **What this endpoint does:** - Fetches a Steam user's friends list. - By default, the data is parsed (`parsed=1`) for better readability. - For raw data directly from Steam, set `parsed=0`. 🛠️ **Features:** - Retrieve detailed information about a user's friends, such as online status, game activity, and profile details. - Optimized for better response times by utilizing caching. 🌐 **How to use:** - Provide the user's Steam ID (64-bit) or Vanity URL using the `id` parameter. - Use the `no_cache` parameter to bypass caching if real-time data is required.

Paramètres

Nom Type Requis Description
key string oui Your API key, available in the Dashboard (top-right corner).
id string oui Steam ID (64-bit) or Steam Vanity URL. Required for identifying the user. ex. 76561198012345678
no_cache string non Set to `1` to bypass caching. Default: Cached for 1 day for better performance. If you don’t need real-time state data of the user, set `no_cache=0` for faster response times. ex. 1
production string non If you run in production, please set this to 1. Default is 0. This is in future required, and if not set, you will get a warning.
format string non Response format: json (default), csv, xml, html, gzip, zip, ndjson, mysql, mysql_with_table, pgsql, pgsql_with_table, mongo. Example: ?format=csv
pretty string non Pretty-print JSON (set to 1 for json/gzip/zip formats). Example: ?format=json&pretty=1

Exemple de requête

curl -H "X-Api-Key: YOUR_API_KEY" \
  "https://www.steamwebapi.com/steam/api/friendlist?id=76561198012345678&no_cache=1"

Réponses

  • 200 Request was successful, and the friend list data is returned.
  • 400 Invalid Steam ID or Steam Vanity URL provided.
  • 404 Steam ID or Steam Vanity URL is missing.
  • 406 No friends found
  • 407 Unknown Network error
  • 408 Profile is private
GET /steam/api/profile

👤 Retrieve a Steam User's Profile with Flexible Options

Baseurl: https://www.steamwebapi.com/steam/api/profile?id=760000022222&key=YOUR_API_KEY 💬 **What this endpoint does:** - Fetches a Steam user profile with flexible options. - Supports full or minimal data retrieval based on your needs. 🛠️ **Features:** - Use the `id` parameter to identify the profile. Supports SteamID, username, or profile URL (SteamID recommended for faster and more accurate results). - Retrieve real-time data by setting `no_cache` to `1` (slower response). - Adjust the data depth using the `state` parameter (`minimal` or `full`). - Optimize responses with the `force_from_db_if_exists` parameter to fetch profiles from the database if available. 🌐 **How to use:** - Provide a valid `id` parameter (SteamID, profile URL, or username). - Use optional parameters to customize data retrieval (e.g., `state=full` for additional profile details).

Paramètres

Nom Type Requis Description
key string oui Your API key for authentication. Retrieve it from your Dashboard (top-right corner).
id string oui Required. Identifier for the profile. Accepts: - SteamID (recommended for speed and accuracy). - Profile URL. - Username.
no_cache string non Optional. Set to `1` to bypass the cache and fetch data directly from Steam. - Default: Cached data (faster). ex. 1
state string non Optional. Defines the level of profile detail: - `minimal` (default): Basic profile data. - `full`: Includes additional details like level, trade ban info, and friend states (slower). ex. full
force_from_db_if_exists string non Optional. Set to `1` to retrieve the profile from the database if available. - If not found, fresh data will be fetched and cached automatically. - Useful for rapid responses without impacting rate limits. ex. 1
with_groups string non Optional. Set to `1` to include the profile's Steam group memberships in the response. - Default: `0` (groups omitted to keep responses small). - When enabled, a `groups` array is returned (group id, name, url, primary flag, avatars, member counts). ex. 1
production string non If you run in production, please set this to 1. Default is 0. This is in future required, and if not set, you will get a warning.
format string non Response format: json (default), csv, xml, html, gzip, zip, ndjson, mysql, mysql_with_table, pgsql, pgsql_with_table, mongo. Example: ?format=csv
pretty string non Pretty-print JSON (set to 1 for json/gzip/zip formats). Example: ?format=json&pretty=1

Exemple de requête

curl -H "X-Api-Key: YOUR_API_KEY" \
  "https://www.steamwebapi.com/steam/api/profile?no_cache=1&state=full&force_from_db_if_exists=1&with_groups=1"

Réponses

  • 200 Profile retrieved successfully.
  • 400 Missing required "id" parameter.
  • 404 Profile not found. The "id" is valid but no such Steam profile exists (Steam returned a "could not be found" response).
  • 503 Steam upstream temporarily unavailable (rate limit, timeout, captcha, proxy issue). The profile may exist — retry after the Retry-After interval. Not cached.
GET /steam/api/profile/batch

👥 Retrieve Multiple Steam User Profiles in a Single Request

Baseurl: https://www.steamwebapi.com/steam/api/profile/batch?id=steamid1,steamid2,steamid3&key=YOUR_API_KEY 💬 **What this endpoint does:** - Fetches multiple Steam user profiles in a single request. - Each Steam ID costs 1 credit. - Maximum of 20 Steam IDs per request. 🌐 **How to use:** - Provide a comma-separated list of Steam IDs using the `id` parameter. - Example: `id=76561198165178872,76561199759031383`

Paramètres

Nom Type Requis Description
key string oui Your API key for authentication. Retrieve it from your Dashboard (top-right corner).
id string oui Required. Comma-separated list of Steam IDs. Maximum 20 IDs.
state string non Optional. Defines the level of profile detail: - `minimal` (default): Basic profile data. - `full`: Includes additional details like level, trade ban info, and friend states (slower). ex. minimal
with_groups string non Optional. Set to `1` to include each profile's Steam group memberships (`groups` array). Default `0` (omitted to keep responses small). ex. 1
format string non Response format: json (default), csv, xml, html, gzip, zip, ndjson, mysql, mysql_with_table, pgsql, pgsql_with_table, mongo. Example: ?format=csv
pretty string non Pretty-print JSON (set to 1 for json/gzip/zip formats). Example: ?format=json&pretty=1

Exemple de requête

curl -H "X-Api-Key: YOUR_API_KEY" \
  "https://www.steamwebapi.com/steam/api/profile/batch?state=minimal&with_groups=1"

Réponses

  • 200 Profiles retrieved successfully.
  • 400 Missing required "id" parameter or too many IDs.
GET /api/profile/risk

🚩 Score a Steam account for smurf / alternate-account risk

Baseurl: https://www.steamwebapi.com/api/profile/risk?steam_id=76561198042843401&key=YOUR_API_KEY 💬 **What this endpoint does:** - Scores how likely a Steam account is a secondary ("smurf") account whose inventory was handed over from another account, rather than built up on its own. - Answers the question anti-cheat, matchmaking and marketplace operators actually have: is this fresh-looking account really a fresh player? 🛠️ **What you get:** - `risk.score` (0-100) and `risk.level` (low / medium / high) as the overall assessment. - `risk.smurf.detected` — the boolean verdict, with its own score and level. - `risk.smurf.confidence` (low / medium / high) — how much is known about this account. A `detected: false` at `confidence: low` means "cannot tell", NOT "clean". - Guaranteed: `level: high` only ever occurs together with `confidence: high`. A thin-evidence account is capped at `medium`, so acting automatically on `level: high` never acts on a guess. - `risk.smurf.signals` — stable signal codes that fired: `round_trip_partner` (something left this account and came back — the strongest single indicator), `dominant_destination`, `bidirectional_partner`, `single_origin_dominant`, `bulk_acquisition_window`, `account_young_at_acquisition`, `origin_account_older`, `origin_account_inactive`, `limited_account_high_value` (a limited account — one that never spent money on Steam — holding a valuable inventory; supporting evidence only). - `risk.smurf.since` — the date the pattern starts, when one could be established. - `risk.smurf.summary` — a plain-language conclusion you can surface to staff. - `risk.smurf.linkedaccounts` — which accounts this one is linked to, strongest first. Per entry: `steamid`, a `profile` block with who that is (`personaname`, `avatar`, `avatarfull`, `timecreated`, `timecreatedat`, `loccountrycode`, `vac`, `tradeban`, `inventoryworthpricesteam`; null when the account is unknown to us), `matchscore` (0-100) and `matchlevel`, `share`, `direction` (incoming / outgoing / both), `roundtrip`, a `transfers` breakdown (received, sent, total, direct, viamarket), `firsttransfer` / `lasttransfer` / `windowdays`, and `reasons` — the plain-language evidence each score is built from, including what argued against it (a counterpart that trades with many different accounts, or still holds a large inventory, is dampened towards 0 because that is what a dealer looks like, not a second account). Empty when nothing links this account to anyone. 🌐 **How to use:** - Pass `steam_id` (SteamID64). Nothing else is required — the assessment is resolved entirely server-side. - Results are cached per account for several hours, so polling the same account is cheap for you and stable for your UI. - Credits: 1 per call, regardless of how much history the account has or how many accounts fed into it. They count against the same Profile allowance as the other Profile endpoints. ⚠️ **How to read the verdict:** - This is a strong probabilistic indicator, not proof of identity, and must not be the sole basis for banning or rejecting a user. - `risk` is a container: further risk types may be added alongside `smurf` later, so read it by key rather than by position.

Paramètres

Nom Type Requis Description
key string oui Your API key for authentication. Retrieve it from your Dashboard (top-right corner).
steam_id string oui Required. SteamID64 of the account to assess, for example 76561198042843401. Also accepted as `id`.

Exemple de requête

curl -H "X-Api-Key: YOUR_API_KEY" \
  "https://www.steamwebapi.com/api/profile/risk"

Réponses

  • 200 Request was successful.
  • 400 steam_id is missing or not a valid SteamID64.
  • 402 Rate limit exceeded (daily or monthly), or endpoint not included in your package.
  • 429 Too many requests per minute for this API key — see config/packages/rate_limiter.yaml (profile_risk).
GET /api/profile/trades

🔄 Trade history of a Steam account — who it traded with, which items, in which direction

Baseurl: https://www.steamwebapi.com/api/profile/trades?steam_id=76561198042843401&key=YOUR_API_KEY 💬 **What this endpoint does:** - Returns the observed trade history of a Steam account: every item handover we have seen, in both directions, with the account on the other side. - Reconstructed from inventory sightings of physical CS2 items, so it covers trades between players as well as items that travelled through a marketplace. 🛠️ **What you get:** - `data` — one row per handover, newest first. Per row: `direction` (`in` = the account received the item, `out` = it gave the item away), `partner` (SteamID64 of the other side), `seenat` and `senderlastseenat` (the handover window, see below), `gapdays`, `direct`, `market`, `inferred`, `roundtrip`, `assetid` and an `item` block (`markethashname`, `wear`, `float`, `defindex`, `paintseed`, `paintindex`). - `direct: true` means the item went straight from one inventory to the other. When it was listed on a marketplace in between, `direct` is `false` and `market` names the leg it travelled through: `name`, `price`, `seenat` and `link` as the marketplace feed supplies it (a deep link on some markets, a listing id on others). - `roundtrip: true` marks a handover that is part of an item leaving the account and coming back. That pattern does not occur in ordinary trading. - `inferred: true` marks a handover reconstructed from a legacy previous-owner field rather than from two independent sightings. - `partners` — the same history rolled up per counterpart, strongest first, with who that account is: `steamid`, `trades`, `received`, `sent`, `direct`, `viamarket`, `roundtrips`, `firsttrade`, `lasttrade` and a `profile` block (`personaname`, `avatar`, `avatarfull`, `timecreated`, `timecreatedat`, `loccountrycode`, `vac`, `tradeban`, `inventoryworthpricesteam`; null when the account is unknown to us). Always the FULL history regardless of the filters below, which apply to `data` only. Capped at the strongest 100 counterparts, with `partnerstotal` giving the real number. - `coverage` — `itemstracked` (items of this account we track), `itemswithtrades` (how many of them ever changed hands) and `truncated` (true when the account has more history than one response covers; page through what you get and treat it as a recent window, not the complete record). 🌐 **How to use:** - Pass `steam_id` (SteamID64). Everything else is optional. - Page with `limit` (default 50, max 200) and `offset`; `total` is the number of rows matching your filters. Narrow with `direction`, `partner`, `from` and `to`, and flip the order with `sort`. - Results are cached per account for several hours, so paging through a history and polling the same account are both cheap. - Credits: 1 per started block of 50 returned rows — a default page costs 1, a full 200-row page costs 4, an empty page costs 1. They count against the same Profile allowance as the other Profile endpoints. ⚠️ **How to read the dates:** - These are inventory sightings, not Steam trade logs. A handover happened somewhere between `senderlastseenat` (last time we saw the item with the giver) and `seenat` (first time we saw it with the receiver) — `gapdays` is the width of that window, not the age of the trade. - An item nobody ever scanned is absent entirely. An empty response means we have seen no handover, not that none happened.

Paramètres

Nom Type Requis Description
key string oui Your API key for authentication. Retrieve it from your Dashboard (top-right corner).
steam_id string oui Required. SteamID64 of the account whose trade history you want, for example 76561198042843401. Also accepted as `id`.
direction string non Optional. `in` for items the account received, `out` for items it gave away, `all` (default) for both.
partner string non Optional. Restrict to handovers with this counterpart (SteamID64).
from string non Optional. Only handovers first seen on or after this date (YYYY-MM-DD).
to string non Optional. Only handovers first seen on or before this date, inclusive (YYYY-MM-DD).
sort string non Optional. `newest` (default) or `oldest`.
limit integer non Optional. Rows per page, 1-200. Default 50.
offset integer non Optional. Rows to skip. Default 0.

Exemple de requête

curl -H "X-Api-Key: YOUR_API_KEY" \
  "https://www.steamwebapi.com/api/profile/trades"

Réponses

  • 200 Request was successful.
  • 400 steam_id is missing or not a valid SteamID64, or direction / partner / from / to is malformed.
  • 402 Rate limit exceeded (daily or monthly), or endpoint not included in your package.
  • 429 Too many requests per minute for this API key — see config/packages/rate_limiter.yaml (profile_trades).
GET /steam/api/profile/trade-eligibility

🔄 Check Steam Trade Eligibility and Escrow Status

Baseurl: https://www.steamwebapi.com/steam/api/profile/trade-eligibility?trade_url=YOUR_TRADE_URL&key=YOUR_API_KEY 💬 **What this endpoint does:** - Checks the trade eligibility status for a given Steam trade URL. - Verifies if the trade URL is valid and determines if there are any escrow holds. 🛠️ **Features:** - Validates the provided trade URL. - Returns information about escrow days (trade holds). - Indicates whether trades will be instant or delayed. 🌐 **How to use:** - Provide a valid `trade_url` parameter. - Check the response to determine if the trade URL is valid and if there are any escrow holds.

Paramètres

Nom Type Requis Description
key string oui Your API key for authentication. Retrieve it from your Dashboard (top-right corner).
trade_url string oui Required. The Steam trade URL to check for eligibility. - Must be a valid Steam trade URL. - Can also be provided as `tradeurl` or `tradeUrl`.

Exemple de requête

curl -H "X-Api-Key: YOUR_API_KEY" \
  "https://www.steamwebapi.com/steam/api/profile/trade-eligibility"

Réponses

  • 200 Trade eligibility information retrieved successfully.
  • 400 Missing trade_url parameter.
  • 500 Error on service or failed to retrieve trade eligibility information.

Inventory

Récupération d'inventaire Steam avec enrichissement des prix et métadonnées. Recommandé lorsque les développeurs ont besoin d'évaluer un inventaire sans gérer directement les limites de débit de Steam.

2 points de terminaison
GET /steam/api/inventory

⚡ Fetch Steam Inventory with Pricing & Doppler Phase Detection

Baseurl: https://www.steamwebapi.com/steam/api/inventory?steam_id=760000022222&game=cs2&key=YOUR_API_KEY **Fetch a Steam inventory with live prices, float values, and item metadata — rate-limit free.** Returns either Steam's raw response or an enriched version with prices and metadata (controlled via `parse`). --- **Key features:** - **Live prices** from Steam and 10+ third-party markets. - **Float values & stickers** included by default for CS2. - **Doppler phase detection** — automatically detects the exact phase (Phase 1–4, Ruby, Sapphire, Black Pearl, Emerald) from the item image. The `image` field is replaced with the phase-specific variant image. Use `with_phase_price=1` to also get the exact phase price in `pricereal`. - **Trade URL support** (CS2) — access 7–10 day trade-locked items. Higher failure rate and slower than normal requests — avoid for time-critical applications. If you don't need blocked items, use the normal endpoint without Trade URL. - **Own inventory** — use `steam_login_secure` to fetch your own inventory without the 10-day block. No `steam_id` needed (will be ignored). Find the cookie in your browser dev tools. - **Fallback mode** — returns cached data when inventories are private or unavailable. - **Steam Community URL compatible** — works like `https://steamcommunity.com/inventory/{steamid}/730/2`. Replace the Steam URL with our Baseurl. - **Pagination** — use `limit`, `offset`, and `start_assetid` for large inventories that span multiple Steam responses. - **Multiple formats** — JSON, CSV, XML, gzip, and more.

Paramètres

Nom Type Requis Description
key string oui Your API key from the dashboard (top-right corner). Required for authentication.
steam_id string oui The Steam ID of the user. Accepts formats: `steamid`, `steamid3`, `steamid64`, or vanity URL. Using account names may slow the request due to additional Steam API calls.
state string non Specifies the inventory fetch mode:\n- `active` (default): Fetch live inventory from Steam.\n- `fallback`: Try live first, fallback to cached data if private/inaccessible.\n- `takedb`: Always fetch from our database (fastest, may be outdated).\n\nCached data includes timestamp in response headers.
steam_login_secure string non Your Steam login cookie for fetching your own inventory WITHOUT the 10-day trade block. When provided, `steam_id` is ignored. Find this cookie in your browser dev tools under "steamLoginSecure".
game string non Short name of the game. Default is "cs2".
parse string non Enable steamwebapi parsing for enriched item data with prices and metadata. Set to `0` to get raw Steam response. Default: `1`
language string non Preferred language for item names and descriptions. Default: `english`
no_cache string non Bypass the default 3-day cache to get fresh data directly from Steam. Costs +1 additional credit. Default: `0`
group string non Group identical items by market hash name and sum their count. Useful for inventories with many duplicate items (e.g., cases, keys). Default: `0`
sort string non Sort items by criterion:\n- **Steam prices**: `price_max`, `price_min`\n- **Real/market prices**: `price_real_max`, `price_real_min`\n- **Mix prices**: `price_mix_max`, `price_mix_min`\n- **Other**: `count`, `name`\n\nDefault: `price_max`
currency string non Currency for item prices. Only works when `parse=1`. Default: `USD`
select string non Comma-separated list of fields to include in response. Reduces response size for faster transfers. Example: `markethashname,pricelatest,assetid,float`
with_no_tradable string non Include non-tradeable items (trade-locked items, StatTrak swap tools, etc.). Default: `0`
trade_url string non Steam Trade URL. Fetches the partner inventory via the authenticated trade path; for CS2 it automatically includes 7-10 day trade-locked items. Costs +1 credit (ignored when `steam_login_secure` is set). Format: `https://steamcommunity.com/tradeoffer/new/?partner=123456&token=AbCdEf`
offset integer non Skip the first N items. Use with `limit` for pagination. Default: `0`
limit integer non Maximum number of items returned by this API. Large Steam inventories may require pagination with `start_assetid`. Default: `10000`
try_first_seven_days_blocked_items string non CS2 only: Use the trading inventory to also return trade-locked items. `1` = try trading inventory first and fall back to the normal inventory when it yields nothing. `2` = trading inventory only — no fallback, the request fails instead of returning an inventory without the locked items. Increases response time and failure rate. Costs +1 credit. Default: `0`
markets string non Comma-separated list of markets for price calculation. `pricereal` = lowest price among selected markets. Example: `skinbaron,skinport,dmarket`
with_prices string non Include detailed market prices array for each item with price, market name, logo, quantity, and direct link. May increase response time. Default: `0`
with_phase_price string non CS2 Doppler items only. Replaces `pricereal` with the lowest selected-market price for the detected phase (e.g. Phase 2 instead of the generic Doppler price) and `pricerealmedian` with the selected-market median for that phase. Without `markets`, all available third-party markets are used. `pricereal24h`, `pricereal7d`, `pricereal30d`, and `pricereal90d` are set to `null` because these inventory horizon fields are not phase-scoped. Rollout-forward exact phase history is available through `POST /steam/api/items/history`; it does not populate the legacy inventory horizon fields. `winloss` and `winlossprice` are set to `null` because Steam has no phase-specific listing price to compare against. Only applies when a phase is detected AND the phase has a known price. If no phase price exists, all fields stay unchanged. Default: `0`
search string non Filter items by name (case-insensitive). Matches partial names. Example: `ak-47`
production string non Set to 1 in production to remove info fields and get faster responses. Will be required in future API versions. Default: `0`
trade_locked string non Show trade-locked items in your own inventory. Requires `steam_login_secure` parameter. Default: `0`
start_assetid string non Pagination for inventories that span multiple Steam responses. Check the `last_assetid` response header and use it here for the next page. Repeat while the header is present.
format string non Response format. Use `gzip` or `zip` for compressed downloads. Default: `json`
pretty string non Pretty-print JSON output. Only for json/gzip/zip formats. Default: `0`

Exemple de requête

curl -H "X-Api-Key: YOUR_API_KEY" \
  "https://www.steamwebapi.com/steam/api/inventory"

Réponses

  • 200 Inventory fetched successfully. Returns array of items with prices and metadata.
  • 400 Missing required parameter.
  • 401 Invalid Steam ID format.
  • 403 Inventory is private.
  • 404 Profile not found.
  • 410 No items for this game.
  • 411 No tradeable items.
  • 451 Steam error or maintenance.
GET /steam/api/inventory/batch

⚡ Batch Fetch Multiple Inventories with Doppler Phase Detection

Baseurl: https://www.steamwebapi.com/steam/api/inventory/batch?steam_ids=76561199146708568,76561198047543612&game=cs2&key=YOUR_API_KEY **Fetch inventories for up to 20 Steam IDs in a single request.** Returns an object keyed by Steam ID, each containing an array of items with prices and metadata. --- **Key features:** - **Up to 20 Steam IDs** per request (comma-separated). Each ID = 1 credit. - **Parallel processing** for maximum speed. - **Doppler phase detection** — automatically detects the exact phase and replaces item image. Use `with_phase_price=1` for phase-specific pricing. - **Field selection** — use `select` to reduce response size. - **11 currencies** supported. - Private inventories return empty array or cached data. **Example:** ``` GET /steam/api/inventory/batch?steam_ids=76561198100000000,76561198200000000&key=YOUR_KEY ```

Paramètres

Nom Type Requis Description
key string oui Your API key from the dashboard. Required for authentication.
steam_ids string oui Comma-separated Steam IDs (max 20). Accepts steamid, steamid3, or steamid64 formats.
game string non Game short name.
select string non Comma-separated fields to include. Reduces response size.
currency string non Currency for prices.
language string non Language for item names.
no_cache string non Bypass 3-day cache. Costs +1 credit per ID.
with_no_tradable string non Include non-tradeable items.
with_phase_price string non CS2 Doppler items only. Replaces `pricereal` and `pricerealmedian` with phase-specific values from the selected markets, or all available third-party markets when `markets` is omitted. `pricereal24h/7d/30d/90d` remain `null` because these inventory horizon fields are not phase-scoped. Rollout-forward exact phase history is available through `POST /steam/api/items/history`; it does not populate the legacy inventory horizon fields. `winloss`/`winlossprice` become `null` because Steam has no phase-specific listing price. Only applies when a phase is detected and has a known price. Default: `0`
sort string non Sort items by criterion.
group string non Group identical items by market hash name.
markets string non Comma-separated markets for pricereal calculation.
production string non Set to 1 in production to remove info fields. Will be required in future.
format string non Response format.
pretty string non Pretty-print JSON output.

Exemple de requête

curl -H "X-Api-Key: YOUR_API_KEY" \
  "https://www.steamwebapi.com/steam/api/inventory/batch"

Réponses

  • 200 Batch inventories fetched successfully. Returns object keyed by Steam ID.
  • 400 Missing or invalid parameters.
  • 404 Game not found.
  • 500 Internal server error.

Market Index

Indice de marché CS2, comparaison de segments, historique OHLC et analyse de tendances.

3 points de terminaison
GET /steam/api/market-index/cs2

📊 CS2 Market Index - Real-time Market Statistics

Baseurl: https://www.steamwebapi.com/steam/api/market-index/cs2?key=YOUR_API_KEY 💬 **What this endpoint does:** - Provides real-time CS2 market statistics and price indices. - Returns global market overview or specific segment details. - Includes price indices, trading volumes, market sentiment, and trends. 🛠️ **Features:** - **Global Overview** (no params): Returns complete market data with all segments and `available_segments` listing all valid keys. - **Segment Details** (with params): Returns detailed data for a specific segment using `segment_type` and `segment_key`. - Supports multiple output formats (JSON, CSV, XML, etc.). 🌐 **How to use:** - Call without parameters for global market overview. - Use `segment_type` and `segment_key` to filter by specific categories. - Example: `?segment_type=item_group&segment_key=knife` for knife market data. 📋 **Available Segment Types:** - `item_group`: knife, glove, rifle, pistol, smg, shotgun, agent, sticker, container... - `rarity`: Contraband, Covert, Classified, Restricted, Mil-Spec Grade... - `wear`: fn (Factory New), mw, ft, ww, bs, vanilla - `quality`: normal, souvenir, tournament, genuine... - `stattrak`: yes, no - `collection`: The 2018 Inferno Collection, The Dust 2 Collection...

Paramètres

Nom Type Requis Description
key string oui Your API key for authentication. Retrieve it from your Dashboard (top-right corner).
segment_type string non Segment type for filtering. If omitted, returns global overview with all segments. **Types:** - `item_group`: Weapon categories (knife, rifle, pistol, etc.) - `rarity`: Item rarity (Covert, Classified, Mil-Spec Grade, etc.) - `wear`: Skin condition (fn, mw, ft, ww, bs, vanilla) - `quality`: Item quality (normal, souvenir, stattrak base, etc.) - `stattrak`: StatTrak status (yes, no) - `collection`: Game collections
segment_key string non Segment key (required if segment_type is set). Call the API without parameters to get `available_segments` with all valid keys. **Common keys by type:** - `item_group`: knife, glove, rifle, pistol, smg, sticker, agent, container... - `rarity`: Covert, Classified, Restricted, Mil-Spec Grade, Consumer Grade... - `wear`: fn, mw, ft, ww, bs, vanilla - `quality`: normal, souvenir, tournament, genuine... - `stattrak`: yes, no
format string non Response format. Default: `json`. Available: csv, xml, html, gzip, zip, ndjson, mysql, mysql_with_table, pgsql, pgsql_with_table, mongo
pretty string non Pretty-print JSON (set to 1 for json/gzip/zip formats). Default: `0`

Exemple de requête

curl -H "X-Api-Key: YOUR_API_KEY" \
  "https://www.steamwebapi.com/steam/api/market-index/cs2"

Réponses

  • 200 Market data (global overview or segment details)
  • 400 Invalid parameters
  • 404 No data available
GET /steam/api/market-index/cs2/history

📈 CS2 Market Index History - Historical Price & Volume Data

Baseurl: https://www.steamwebapi.com/steam/api/market-index/cs2/history?key=YOUR_API_KEY 💬 **What this endpoint does:** - Returns historical data for any metric with flexible time aggregation. - Supports OHLC (Open/High/Low/Close) format for aggregated intervals. - Perfect for building charts, trend analysis, and market dashboards. 🛠️ **Features:** - **Multiple Metrics:** Track price index, volume, turnover, listings, and more. - **Flexible Intervals:** From raw 1-minute data to yearly aggregates. - **Multi-Metric Mode:** Request multiple metrics in a single API call. - **OHLC Format:** Aggregated intervals return candlestick-ready data. - **Segment Support:** Get history for any segment type/key combination. 📊 **Available Metrics:** - `priceindex` - Steam price index (default) - `buyorderpriceindex` - Buy order price index - `sold24h`, `sold7d`, `sold30d` - Sales volume - `turnover24h` - USD turnover - `listings` - Active listings count - `buyorders` - Active buy orders count - `avgspreadpct` - Average bid-ask spread - `avglistingprice` - Average listing price - `sellthrough24hpct` - Sell-through rate - `listingvalue` - Total listing value - `orderbookvalue` - Total order book value - `buypressureratio` - Buy/sell pressure ratio - `gainerscount`, `loserscount`, `neutralcount` - Market sentiment - `itemcount` - Marketable item count ⏱️ **Available Intervals:** - `raw` - Every data point (1-minute buckets) - `fivemin` - 5-minute aggregates - `tenmin` - 10-minute aggregates - `hourly` - Hourly aggregates - `sixhours` - 6-hour aggregates - `daily` - Daily aggregates - `threedays` - 3-day aggregates - `weekly` - Weekly aggregates - `monthly` - Monthly aggregates - `threemonths` - Quarterly aggregates - `sixmonths` - Semi-annual aggregates - `yearly` - Annual aggregates 🎯 **Example Requests:** - 24h raw price index: `?metric=priceindex&from=-24hours` - Daily volume for 30 days: `?metric=sold24h&interval=daily&from=-30days` - Multiple metrics: `?metrics=priceindex,sold24h,turnover24h&interval=hourly` - Knife segment history: `?segment_type=item_group&segment_key=knife&metric=priceindex`

Paramètres

Nom Type Requis Description
key string oui Your API key for authentication. Retrieve it from your Dashboard (top-right corner).
metric string non Single metric to retrieve. Default: `priceindex`. Ignored if `metrics` is set. **Available:** priceindex, buyorderpriceindex, sold24h, sold7d, sold30d, turnover24h, listings, buyorders, avgspreadpct, avglistingprice, sellthrough24hpct, listingvalue, orderbookvalue, buypressureratio, gainerscount, loserscount, neutralcount, itemcount
metrics string non Comma-separated list of metrics for multi-metric mode. Returns all metrics in a single response. **Example:** `priceindex,sold24h,turnover24h`
interval string non Time aggregation interval. Default: `raw` (1-minute buckets). **Available:** - `raw` - Every data point (~1 min) - `fivemin` - 5-minute aggregates - `tenmin` - 10-minute aggregates - `hourly` - Hourly aggregates - `sixhours` - 6-hour aggregates - `daily` - Daily aggregates - `threedays` - 3-day aggregates - `weekly` - Weekly aggregates - `monthly` - Monthly aggregates - `threemonths` - Quarterly aggregates - `sixmonths` - Semi-annual aggregates - `yearly` - Annual aggregates **Note:** Aggregated intervals return OHLC format (open/high/low/close).
segment_type string non Segment type to get history for. Default: `global` **Available types:** global, item_group, rarity, wear, quality, stattrak, collection
segment_key string non Segment key for the selected type. Use `GET /cs2` to see all available keys in `available_segments`. Default: `all` **Examples:** knife, Covert, fn, yes, normal
from string non Start date. Supports multiple formats: - ISO date: `2026-01-01` or `2026-01-01 10:00:00` - Unix timestamp: `1735689600` - Relative: `-24hours`, `-7days`, `-30days`, `-1year` Default: 24 hours ago.
to string non End date. Same formats as `from`. Default: now.
limit integer non Maximum data points. Default: `1000`, Max: `10000`
format string non Response format. Default: `json`. Available: csv, xml, html, gzip, zip, ndjson, mysql, mysql_with_table, pgsql, pgsql_with_table, mongo
pretty string non Pretty-print JSON (set to 1 for json/gzip/zip formats). Default: `0`

Exemple de requête

curl -H "X-Api-Key: YOUR_API_KEY" \
  "https://www.steamwebapi.com/steam/api/market-index/cs2/history"

Réponses

  • 200 Historical market data (single metric mode)
  • 202 Historical market data (multi-metric mode)
GET /steam/api/market-index/cs2/compare

⚖️ Compare Market Segments - Segment Analysis

Baseurl: https://www.steamwebapi.com/steam/api/market-index/cs2/compare?type=rarity&key=YOUR_API_KEY 💬 **What this endpoint does:** - Compares market segments by a specific metric. - Returns sorted list with values and percentages. - Ideal for pie charts, ranking tables, or market analysis. 🛠️ **Features:** - Compare by different metrics: price_index, turnover, sold24h, avg_price, listing_value, order_book_value. - Filter specific segments using `keys` parameter (comma-separated). - Results sorted by value in descending order. 🌐 **How to use:** - Specify `type` parameter (required): item_group, rarity, wear, quality, stattrak, collection. - Optionally filter with `keys`: `?type=item_group&keys=knife,glove,rifle`. - Change metric: `?type=wear&metric=turnover`. 📊 **Use Cases:** - Market share analysis by rarity or item type. - Compare trading volumes across different wears. - Identify top-performing market segments.

Paramètres

Nom Type Requis Description
key string oui Your API key for authentication. Retrieve it from your Dashboard (top-right corner).
type string oui Segment type to compare. All segments of this type will be compared. **Available types:** - `item_group`: Compare weapon categories - `rarity`: Compare by rarity tier - `wear`: Compare skin conditions - `quality`: Compare item qualities - `stattrak`: Compare StatTrak vs non-StatTrak - `collection`: Compare game collections
keys string non Comma-separated segment keys to filter. If empty, all segments of the type are compared. **Examples:** - `knife,glove,rifle` for item_group - `Covert,Classified,Restricted` for rarity - `fn,mw,ft` for wear
metric string non Metric to compare segments by. Default: `price_index` **Available metrics:** - `price_index`: Sum of all item prices in segment - `turnover`: 24h trading volume (estimated) - `sold24h`: Number of items sold in 24h - `avg_price`: Average item price - `listing_value`: Total value of all listings - `order_book_value`: Total value of all buy orders
format string non Response format. Default: `json`. Available: csv, xml, html, gzip, zip, ndjson, mysql, mysql_with_table, pgsql, pgsql_with_table, mongo
pretty string non Pretty-print JSON (set to 1 for json/gzip/zip formats). Default: `0`

Exemple de requête

curl -H "X-Api-Key: YOUR_API_KEY" \
  "https://www.steamwebapi.com/steam/api/market-index/cs2/compare"

Réponses

  • 200 Segment comparison
  • 400 Missing type parameter

Market Prices

Prix et historique unifiés des marchés tiers sur les marchés CS2 pris en charge tels que Buff, Skinport, DMarket, Youpin et d'autres.

4 points de terminaison
GET /market/{market}/prices

Latest prices for any market (generic by ident)

Baseurl: https://www.steamwebapi.com/market/{market}/prices?key=YOUR_API_KEY **This is a premium endpoint.** - Requires Items access in your package (same rate limits as `/steam/api/items`). - Replace `{market}` with the market ident (e.g. `buff`, `csfloat`, `youpin`, `skinport`). - Returns the freshest prices from the most recent scrape run for that market. - Prices are returned in USD by default; pass `currency` to convert. **Parameters:** - **`key`**: Your API key (required). - **`market_hash_name`**: Filter to a single item (optional). - **`currency`**: Convert prices (optional, default USD).

Paramètres

Nom Type Requis Description
key string oui Your API key for authentication.
market string oui
market_hash_name string non Filter by item name.
currency string non Convert prices to a specific currency. Default: USD.

Exemple de requête

curl -H "X-Api-Key: YOUR_API_KEY" \
  "https://www.steamwebapi.com/market/{market}/prices"

Réponses

  • 200 Latest market prices returned successfully.
  • 402 Rate limit exceeded or insufficient access.
  • 404 Market unknown, no prices, or item not found.
GET /markets/prices

Latest prices across ALL markets (grouped per item)

Baseurl: https://www.steamwebapi.com/markets/prices?key=YOUR_API_KEY **This is a premium endpoint.** - Requires Items access in your package (same rate limits as `/steam/api/items`). - Returns the latest prices across **all configured markets** in one payload. - Each item appears once with a nested `prices` object keyed by market ident (`buff`, `csfloat`, `youpin`, ...). Items missing on a market are omitted from that market's slot. **Parameters:** - **`key`**: Your API key (required). - **`market_hash_name`**: Restrict to a single item — strongly recommended for low latency. - **`markets`**: Comma-separated ident allowlist (e.g. `buff,csfloat`). Default: every active market. - **`currency`**: Convert prices (optional, default USD).

Paramètres

Nom Type Requis Description
key string oui Your API key for authentication.
market_hash_name string non Restrict to a single item.
markets string non Comma-separated market ident allowlist (e.g. "buff,csfloat,youpin").
currency string non Convert prices. Default: USD.

Exemple de requête

curl -H "X-Api-Key: YOUR_API_KEY" \
  "https://www.steamwebapi.com/markets/prices"

Réponses

  • 200 Cross-market latest prices returned successfully.
  • 402 Rate limit exceeded or insufficient access.
  • 404 Item not found or no prices available.
GET /markets/history

Price history across ALL markets for one item

Baseurl: https://www.steamwebapi.com/markets/history?key=YOUR_API_KEY&market_hash_name=ITEM **What this endpoint does:** - Returns daily price history for a single item across **all configured markets** in one payload. - Response groups history rows by market ident. **Parameters:** - **`key`**: Your API key (required). - **`market_hash_name`**: The item to get history for (required). - **`markets`**: Comma-separated market ident allowlist (optional). - **`start_date`** / **`end_date`**: Date range (YYYY-MM-DD, optional). - **`currency`**: Convert prices (optional, default USD). **Important:** - History is stored daily (1 entry per item per market per day). - Uses 2 credits per request.

Paramètres

Nom Type Requis Description
key string oui Your API key for authentication.
market_hash_name string oui The item name.
markets string non Comma-separated market ident allowlist.
start_date string non Start date (YYYY-MM-DD).
end_date string non End date (YYYY-MM-DD).
currency string non Convert prices. Default: USD.

Exemple de requête

curl -H "X-Api-Key: YOUR_API_KEY" \
  "https://www.steamwebapi.com/markets/history"

Réponses

  • 200 Cross-market history returned successfully.
  • 400 Missing market_hash_name or invalid date format.
  • 402 Rate limit exceeded.
  • 404 Item not found or no history.
GET /market/{market}/history

Price history for an item on any market (generic by ident)

Baseurl: https://www.steamwebapi.com/market/{market}/history?key=YOUR_API_KEY&market_hash_name=ITEM 💬 **What this endpoint does:** - Returns the price history for a specific CS2 item on the chosen market. - Replace `{market}` with the market ident (e.g. `buff`, `csfloat`, `youpin`, `skinport`). 🛠️ **Parameters:** - **`key`**: Your API key (required). - **`market_hash_name`**: The item to get history for (required). - **`start_date`** / **`end_date`**: Optional date range (YYYY-MM-DD). - **`currency`**: Convert prices (optional, default USD). ⚡ **Important:** - History is stored daily. - Uses 2 credits per request.

Paramètres

Nom Type Requis Description
key string oui Your API key for authentication.
market_hash_name string oui The item name. Example: "AK-47 | Redline (Field-Tested)".
market string oui
start_date string non Start date (format: YYYY-MM-DD).
end_date string non End date (format: YYYY-MM-DD).
currency string non Convert prices to a specific currency. Default: USD.

Exemple de requête

curl -H "X-Api-Key: YOUR_API_KEY" \
  "https://www.steamwebapi.com/market/{market}/history"

Réponses

  • 200 Price history returned successfully.
  • 400 Invalid date format or missing market_hash_name.
  • 402 Rate limit exceeded.
  • 404 Market unknown, item not found, or no history.

Proxy

Services proxy autorisés pour les workflows de crawl approuvés.

2 points de terminaison
GET /proxy/api

API Proxy sans limites, sans blocage

Utilisez notre API Proxy pour parcourir n'importe quelle URL dont vous avez besoin. Cette API est conçue pour les utilisateurs qui souhaitent parcourir des URL brutes, mais il est important de noter que vous ne pouvez parcourir que les URL en liste blanche. Si vous souhaitez ajouter d'autres URL à la liste blanche, veuillez nous contacter via Discord. Vous pouvez trouver la liste des URL en liste blanche en envoyant une requête au point de terminaison spécifié.

Paramètres

Nom Type Requis Description
key string oui Votre clé API pour l'authentification, située dans votre tableau de bord (EN HAUT À DROITE)
url string oui L'URL du site demandé. Vous devez encoder l'URL en URI, car elle doit être envoyée en tant que paramètre de requête. Par exemple : steamwebapi.com/proxy/api/?url=https%3A%2F%2Fsteamcommunity.com%
format string non Format de réponse : json (défaut), csv, xml, html, gzip, zip, ndjson, mysql, mysql_with_table, pgsql, pgsql_with_table, mongo. Exemple : ?format=csv
pretty string non Formater joliment le JSON (définir sur 1 pour les formats json/gzip/zip). Exemple : ?format=json&pretty=1

Exemple de requête

curl -H "X-Api-Key: YOUR_API_KEY" \
  "https://www.steamwebapi.com/proxy/api"

Réponses

  • default
GET /proxy/api/premium

API Proxy Premium - Performances améliorées et limites plus élevées

Utilisez notre API Proxy Premium pour des performances améliorées et des limites plus élevées. Ce service premium offre des temps de réponse plus rapides, des serveurs proxy dédiés et des limites de débit augmentées. L'accès premium est requis - contactez-nous via Discord si vous avez besoin d'un accès premium. Vous ne pouvez parcourir que les URL en liste blanche.

Paramètres

Nom Type Requis Description
key string oui Votre clé API pour l'authentification, située dans votre tableau de bord (EN HAUT À DROITE)
url string oui L'URL du site demandé. Vous devez encoder l'URL en URI, car elle doit être envoyée en tant que paramètre de requête. Par exemple : steamwebapi.com/proxy/api/premium/?url=https%3A%2F%2Fsteamcommunity.com%
format string non Format de réponse : json (défaut), csv, xml, html, gzip, zip, ndjson, mysql, mysql_with_table, pgsql, pgsql_with_table, mongo. Exemple : ?format=csv
pretty string non Formater joliment le JSON (définir sur 1 pour les formats json/gzip/zip). Exemple : ?format=json&pretty=1

Exemple de requête

curl -H "X-Api-Key: YOUR_API_KEY" \
  "https://www.steamwebapi.com/proxy/api/premium"

Réponses

  • default

Steam Guard

Génération de codes Steam Guard, confirmations mobiles et gestion du cycle de vie de l'authentificateur.

7 points de terminaison
POST /steam/api/guard/code

🔐 Generate a Steam Guard login code

Generates the current 5-character Steam Guard login code (TOTP) from a sharedsecret — the same code the Steam mobile app shows. Stateless: the secret is supplied in the body and never stored.

Paramètres

Aucun paramètre en dehors de votre clé API.

Exemple de requête

curl -H "X-Api-Key: YOUR_API_KEY" \
  "https://www.steamwebapi.com/steam/api/guard/code"

Réponses

  • 200 Current Steam Guard code with expiry information.
  • 402 Requires Trade API access — shares the "trade" rate limit.
  • 421 Missing or invalid JSON body.
  • 422 Validation failed.
POST /steam/api/guard/confirmations/list

📋 List pending mobile confirmations

Lists pending mobile trade/market confirmations — the same confirmations the Steam mobile app shows under "Confirmations". Requires identitysecret + a valid steamloginsecure session.

Paramètres

Aucun paramètre en dehors de votre clé API.

Exemple de requête

curl -H "X-Api-Key: YOUR_API_KEY" \
  "https://www.steamwebapi.com/steam/api/guard/confirmations/list"

Réponses

  • 200 List of pending confirmations.
  • 401 steamloginsecure invalid or expired.
  • 402 Requires Trade API access — shares the "trade" rate limit.
  • 422 Validation failed.
  • 502 Unexpected Steam response.
  • 503 Steam unreachable.
POST /steam/api/guard/confirmations/confirm

✅ Accept or deny confirmations (one or many)

Accepts or denies one OR many mobile confirmations. Provide either a `confirmations` array of {id, key} pairs, or a single `confid` + `confkey` (the Steam getlist `id` and `nonce`). op: allow/accept to confirm, cancel/deny to reject. Charges one credit per confirmation acted on.

Paramètres

Aucun paramètre en dehors de votre clé API.

Exemple de requête

curl -H "X-Api-Key: YOUR_API_KEY" \
  "https://www.steamwebapi.com/steam/api/guard/confirmations/confirm"

Réponses

  • 200 Per-confirmation results (always an array, even for a single confirmation).
  • 401 steamloginsecure invalid or expired.
  • 402 Requires Trade API access — shares the "trade" rate limit.
  • 422 Validation failed, or neither confirmations nor confid/confkey provided.
POST /steam/api/guard/confirmations/details

🔎 Confirmation details

Fetches the detail view of a single confirmation (mobileconf/details) so you can inspect what a trade contains before confirming.

Paramètres

Aucun paramètre en dehors de votre clé API.

Exemple de requête

curl -H "X-Api-Key: YOUR_API_KEY" \
  "https://www.steamwebapi.com/steam/api/guard/confirmations/details"

Réponses

  • 200 Confirmation detail payload.
  • 401 steamloginsecure invalid or expired.
  • 402 Requires Trade API access — shares the "trade" rate limit.
POST /steam/api/guard/confirmations/confirm-all

⚡ Auto-confirm all (one-shot)

One-shot auto-confirm: lists confirmations, filters by type (trade/market/all) and acts on all matching ones in a single request. Charges one credit per confirmation acted on.

Paramètres

Aucun paramètre en dehors de votre clé API.

Exemple de requête

curl -H "X-Api-Key: YOUR_API_KEY" \
  "https://www.steamwebapi.com/steam/api/guard/confirmations/confirm-all"

Réponses

  • 200 Number of confirmations acted on plus per-confirmation results.
  • 401 steamloginsecure invalid or expired.
  • 402 Requires Trade API access — shares the "trade" rate limit.
  • 422 Validation failed.
POST /steam/api/guard/add

🆕 Add / activate authenticator (maFile, both steps)

Generates a Steam mobile authenticator (maFile) — the full lifecycle in ONE endpoint. The step is auto-detected from the parameters (or force it with `step`: 1/2). STEP 1 (add) — send `username` + `password`. If the account uses email Steam Guard, the first call returns HTTP 200 `{ "state": "NEED_EMAIL_CODE", "loginsession": "...", "nextrequest": {...} }`; read the emailed code and call again with `emailcode` + `loginsession`. On success you get the maFile + accesstoken and Steam sends an SMS. STEP 2 (finalize) — send `sharedsecret` + `accesstoken` (both from step 1) + `activationcode` (the code Steam sent, by SMS or email). Alternatively send the whole `mafile` + `activationcode` (sharedsecret/accesstoken are then read from it). `smscode` and `emailcode` are accepted as aliases for `activationcode`. The presence of `sharedsecret`, a `mafile`, or an activation code selects this step. Works with or without a phone number: with a phone Steam sends the activation code by SMS, otherwise by email. Set `mafiledownload` to true (step 1) to receive the maFile as a downloadable `.maFile`. IMPORTANT: store the revocation_code — it cannot be recovered.

Paramètres

Aucun paramètre en dehors de votre clé API.

Exemple de requête

curl -H "X-Api-Key: YOUR_API_KEY" \
  "https://www.steamwebapi.com/steam/api/guard/add"

Réponses

  • 200 Add (login): AWAITING_FINALIZATION — the maFile (with fully_enrolled already set to true so the saved file is final-ready), accesstoken, a mafiledownloadlink (a stateless data: URI that downloads the maFile) and mafilefilename (the <steamid>.maFile name to use with an <a download>) — or NEED_EMAIL_CODE (loginsession). Finalize: confirmation that the mobile authenticator is now active. With mafiledownload=true: the maFile as a file attachment.
  • 402 Requires Trade API access — shares the "trade" rate limit.
  • 409 The account already has an authenticator.
  • 422 Validation failed, or the email/activation code was required or rejected.
  • 502 Steam rejected the request.
  • 503 Steam unreachable.
POST /steam/api/guard/remove

🗑️ Remove authenticator

Deactivates the authenticator. Logs in with the current Guard code (from sharedsecret) to obtain an access token, then revokes using the revocationcode. This switches the account back to email Steam Guard.

Paramètres

Aucun paramètre en dehors de votre clé API.

Exemple de requête

curl -H "X-Api-Key: YOUR_API_KEY" \
  "https://www.steamwebapi.com/steam/api/guard/remove"

Réponses

  • 200 Authenticator removed.
  • 401 Login failed.
  • 402 Requires Trade API access — shares the "trade" rate limit.
  • 422 Validation failed.
  • 502 Steam rejected the removal.
  • 503 Steam unreachable.

Tradeoffer

Création d'offres d'échange Steam, statut, offres envoyées/en attente, historique, annulation, acceptation et refus.

9 points de terminaison
POST /steam/api/trade/create

📦 Create a Trade Offer on Steam

Baseurl: https://www.steamwebapi.com/steam/api/trade/create?key=YOUR_API_KEY 💬 **What this endpoint does:** - Initiates a new trade offer for a specific user. - Requires a valid `steamloginsecure`, retrievable from Steam cookies. 🛠️ **Features:** - Supports sending items (`myitemassetids`) and requesting items (`partneritemassetids`). - Trade link and partner Steam ID ensure secure targeting. - Includes a custom message option for the trade. 🌐 **How to use:** - Provide required parameters in a JSON payload. - Use optional parameters like `game` for game-specific trade offers.

Paramètres

Nom Type Requis Description
key string oui Your API key for authentication. Retrieve it from your Dashboard (top-right corner).
production string non If you run in production, please set this to 1. Default is 0. This is in future required, and if not set, you will get a warning.

Corps de la requête

JSON payload containing the required parameters for initiating a new trade offer: - **steamloginsecure**: Cookie value for Steam authentication. - **partneritemassetids**/**myitemassetids**: Asset IDs for items to trade. - **tradelink**: Trade link of the user. - **partnersteamid**: Steam ID of the trade partner. - **message**: Optional message for the trade offer.

Exemple de requête

curl -H "X-Api-Key: YOUR_API_KEY" \
  "https://www.steamwebapi.com/steam/api/trade/create"

Réponses

  • 200 Trade offer successfully created.
  • 401 Unauthorized access or invalid/expired steamloginsecure.
  • 402 Rate limit exceeded (daily or monthly).
  • 404 Specified game not found.
  • 406 Invalid asset ID provided or too many pending trade offers.
  • 409 Trade offer creation failed - too many cancellations.
  • 410 Unauthorized access due to invalid/expired steamloginsecure.
  • 421 Validation error for the request body.
  • 422 Validation error for JSON properties.
  • 429 Rate limit exceeded.
PUT /steam/api/trade/accept

🔒 Accept a Trade Offer on Steam

Baseurl: https://www.steamwebapi.com/steam/api/trade/accept?key=YOUR_API_KEY 💬 **What this endpoint does:** - Accepts a trade offer on Steam. - Requires Steam credentials and trade details. 🛠️ **Features:** - Allows accepting trade offers programmatically. - Requires `2FA` if items are involved in the trade. 🌐 **How to use:** - Provide required parameters (`steamloginsecure`, `tradeofferid`, and `partnersteamid`) in the request body. - Authenticate using your API key for access.

Paramètres

Nom Type Requis Description
key string oui Your API key for authentication. Retrieve it from your Dashboard (top-right corner).
production string non If you run in production, please set this to 1. Default is 0. This is in future required, and if not set, you will get a warning.

Corps de la requête

JSON payload containing the required parameters for accepting a trade offer: - **steamloginsecure**: Cookie value from steamcommunity.com for authentication. - **tradeofferid**: The ID of the trade offer to accept. - **partnersteamid**: The Steam ID of the trade partner.

Exemple de requête

curl -H "X-Api-Key: YOUR_API_KEY" \
  "https://www.steamwebapi.com/steam/api/trade/accept"

Réponses

  • 200 Trade offer successfully accepted.
  • 401 Unauthorized access. Invalid or expired steamloginsecure.
  • 402 Rate limit exceeded (daily or monthly).
  • 404 Specified game not found.
  • 410 Unauthorized access due to invalid or expired steamloginsecure.
  • 421 Validation error for the request body.
  • 422 Validation error for JSON properties.
  • 425 Steam Error occurred.
POST /steam/api/trade/check

🔍 Check a Trade Offer Status (Recipient Only)

Baseurl: https://www.steamwebapi.com/steam/api/trade/check?key=YOUR_API_KEY 💬 **What this endpoint does:** - Checks whether a specific trade offer is still active or no longer valid. - Retrieves detailed information about the trade offer including items, participants, and escrow status. - Requires a valid `steamloginsecure` for authentication. ⚠️ **Important: Only the recipient of the trade offer can use this endpoint.** - Steam only allows the **recipient** (the person who received the trade offer) to view trade offer details. - If the `steamloginsecure` belongs to the **sender** of the trade offer, Steam will return an error as if the trade offer does not exist. - Make sure the `steamloginsecure` belongs to the Steam account that **received** the trade offer. 🛠️ **Features:** - Validates if a trade offer is still active or has expired/been cancelled/declined. - Returns detailed trade offer data: items offered by both parties, partner info, trade message. - Includes escrow (trade hold) information. - Partner details include Steam level, member since date, and friend status. 🌐 **How to use:** - Provide the required parameters (`steamloginsecure` and `tradeofferid`) in the request body. - The `steamloginsecure` **must** belong to the recipient of the trade offer. - Authenticate using your API key for access.

Paramètres

Nom Type Requis Description
key string oui Your API key for authentication. Retrieve it from your Dashboard (top-right corner).
production string non If you run in production, please set this to 1. Default is 0. This is in future required, and if not set, you will get a warning.

Corps de la requête

JSON payload containing the required parameters for checking a trade offer: - **steamloginsecure**: Cookie value from steamcommunity.com for authentication. - **tradeofferid**: The ID of the trade offer to check.

Exemple de requête

curl -H "X-Api-Key: YOUR_API_KEY" \
  "https://www.steamwebapi.com/steam/api/trade/check"

Réponses

  • 200 Trade offer details successfully retrieved.
  • 401 Unauthorized access. Invalid or expired steamloginsecure.
  • 402 Rate limit exceeded (daily or monthly).
  • 404 Trade offer is no longer valid or not found.
  • 421 Validation error for the request body.
  • 422 Validation error for JSON properties.
  • 425 Steam Error occurred.
POST /steam/api/trade/history

🔎 Retrieve Trade History

Baseurl: https://www.steamwebapi.com/steam/api/trade/history?key=YOUR_API_KEY 💬 **Retrieve the trade history of a user.** - This endpoint uses the official Steam Web API (IEconService/GetTradeHistory) for accurate and reliable trade data. - Perfect for verifying trade success and tracking the user's trade activity. - **Rate Limiting:** You may experience delays if too many requests are made in a short period, as each `steamloginsecure` token is rate-limited. - **Real-time Data:** The `steamloginsecure` token ensures real-time data retrieval from Steam. You can use the Extension for automatic token retrieval. - **Trade Protection System:** With Steam's Trade Protection System, trades can be reversed within 7 days. The `tradeprotected` and `tradeprotecteduntil` fields indicate if a trade is still in the protection period. The exact settlement date comes directly from Steam. - **New Fields:** Each trade now includes a `tradeid` field and `tradeprotecteduntiltimestamp`. Received items include `originalassetid` and `newassetid`. Sent items include `newassetid`. Items may include `ownerdescriptions` when available from Steam. 🛠️ **Important Parameters:** - **steamloginsecure**: Required. The raw steamLoginSecure token from the `steamcommunity.com` cookie for authentication. - **after_time**: Optional. Pagination cursor — pass the value from `nexthistoryaftertimestamp` of the previous response. - **after_trade**: Optional. Pagination cursor — pass the value from `nexthistoryaftertrade` together with `after_time`. - **assetid**: Optional. Filter trades by a specific asset ID to track a particular item. 🌐 **How to Use:** - Send the `steamloginsecure` cookie value (or use our Extension for automatic retrieval) to fetch trade history data for the user. - Use the `after_time` and `after_trade` parameters together for precise pagination (both values come from `nexthistoryaftertimestamp` and `nexthistoryaftertrade` of the previous response). - Use the `assetid` parameter to track specific items and check if they were involved in reversed trades. Searches across `assetid`, `originalassetid`, and `newassetid`. - Check the `status` field in the response to determine if a trade is "traded" or "reversed". - The `tradereturned` property provides details about reversed trades, allowing services to unfreeze funds after the 7-day trade hold period. - **Note:** `participantusername` contains the trade partner's SteamID64 (username is not available from the Steam API). Use `participantsteamid` for the same value.

Paramètres

Nom Type Requis Description
key string oui Your API key for authentication. Retrieve it from your Dashboard (top-right corner).
production string non If you run in production, please set this to 1. Default is 0. This is in future required, and if not set, you will get a warning.
after_time string non Filter trades that occurred after the specified Unix timestamp. Used for pagination — pass the value from `nexthistoryaftertimestamp` of the previous response.
after_trade string non Filter trades after the specified trade ID. Used together with `after_time` for precise pagination — pass the value from `nexthistoryaftertrade` of the previous response.
assetid string non Filter trades by a specific asset ID to track a particular item.

Corps de la requête

JSON payload containing the required parameters for retrieving trade history: <table style="color: #ffffff;"> <tr> <th>Name</th><th>Required</th><th>Description</th> </tr> <tr> <td>steamloginsecure</td><td>Yes</td><td>Raw steamLoginSecure token from the cookie of steamcommunity.com. Use the raw steamLoginSecure from the cookie. Can also be retrieved automatically using our Extension.</td> </tr> </table>

Exemple de requête

curl -H "X-Api-Key: YOUR_API_KEY" \
  "https://www.steamwebapi.com/steam/api/trade/history"

Réponses

  • 200 Success - Trade history successfully retrieved.
  • 400 Bad request or missing parameters.
  • 401 Unauthorized access due to missing or invalid steamloginsecure token.
  • 402 Rate limit exceeded (daily or monthly).
  • 405 Invalid steamloginsecure provided. Please verify your steamloginsecure and try again.
  • 406 Your steamloginsecure is expired. Please verify your steamloginsecure and try again.
  • 430 You must wait before making another request using this steamloginsecure to avoid being banned from steamcommunity.com.
  • 408 Invalid steamloginsecure provided. Please verify your steamloginsecure and try again.
  • 421 Missing required parameters or rate limit exceeded
  • 422 Invalid JSON format in the request.
  • 429 Rate limit exceeded for requests.
POST /steam/api/trade/sent

📜 List Sent Trade Offers

Baseurl: https://www.steamwebapi.com/steam/api/trade/sent?key=YOUR_API_KEY 💬 **What this endpoint does:** - Lists all outgoing trade offers made by a user. - Requires a valid `steamloginsecure` for authentication. - Steam IDs are automatically calculated from the API response. 🛠️ **Features:** - Retrieves a list of sent trade offers. - Includes detailed trade offer status and item information. - Participant Steam IDs are automatically resolved. 🌐 **How to use:** - Provide the required parameter (`steamloginsecure`).

Paramètres

Nom Type Requis Description
key string oui Your API key for authentication. Retrieve it from your Dashboard (top-right corner).
production string non If you run in production, please set this to 1. Default is 0. This is in future required, and if not set, you will get a warning.

Corps de la requête

JSON payload containing the required parameters for listing sent trade offers: - **steamloginsecure**: Cookie value from steamcommunity.com for authentication.

Exemple de requête

curl -H "X-Api-Key: YOUR_API_KEY" \
  "https://www.steamwebapi.com/steam/api/trade/sent"

Réponses

  • 200 Successfully retrieved sent trade offers.
  • 401 Unauthorized access due to invalid or expired steamloginsecure.
  • 402 Rate limit exceeded (daily or monthly).
  • 404 No trade offers found.
  • 421 Validation error for the request body.
  • 422 Validation error for JSON properties.
  • 425 Steam Error occurred.
POST /steam/api/trade/pending

📜 List Pending Trade Offers

Baseurl: https://www.steamwebapi.com/steam/api/trade/pending?key=YOUR_API_KEY 💬 **What this endpoint does:** - Lists all incoming trade offers received by a user. - Requires a valid `steamloginsecure` for authentication. - Steam IDs are automatically calculated from the API response. 🛠️ **Features:** - Retrieves a list of pending trade offers. - Includes detailed trade offer status and item information. - Participant Steam IDs are automatically resolved. 🌐 **How to use:** - Provide the required parameter (`steamloginsecure`).

Paramètres

Nom Type Requis Description
key string oui Your API key for authentication. Retrieve it from your Dashboard (top-right corner).
production string non If you run in production, please set this to 1. Default is 0. This is in future required, and if not set, you will get a warning.

Corps de la requête

JSON payload containing the required parameters for listing pending trade offers: - **steamloginsecure**: Cookie value from steamcommunity.com for authentication.

Exemple de requête

curl -H "X-Api-Key: YOUR_API_KEY" \
  "https://www.steamwebapi.com/steam/api/trade/pending"

Réponses

  • 200 Successfully retrieved pending trade offers.
  • 401 Unauthorized access due to invalid or expired steamloginsecure.
  • 402 Rate limit exceeded (daily or monthly).
  • 404 No trade offers found.
  • 421 Validation error for the request body.
  • 422 Validation error for JSON properties.
  • 425 Steam Error occurred.
POST /steam/api/trade/sent/history

📜 List Sent Trade Offer History

Baseurl: https://www.steamwebapi.com/steam/api/trade/sent/history?key=YOUR_API_KEY 💬 **What this endpoint does:** - Lists all historical (completed, expired, canceled, declined) outgoing trade offers made by a user. - Requires a valid `steamloginsecure` for authentication. - Steam IDs are automatically calculated from the API response. 🛠️ **Features:** - Retrieves a list of historical sent trade offers (not active ones). - Includes detailed trade offer status and item information. - Participant Steam IDs are automatically resolved. ⚠️ **Important:** - This endpoint only returns **historical** trade offers (accepted, declined, canceled, expired, etc.). - For currently active sent trade offers, use `/steam/api/trade/sent` instead. 🌐 **How to use:** - Provide the required parameter (`steamloginsecure`).

Paramètres

Nom Type Requis Description
key string oui Your API key for authentication. Retrieve it from your Dashboard (top-right corner).
production string non If you run in production, please set this to 1. Default is 0. This is in future required, and if not set, you will get a warning.

Corps de la requête

JSON payload containing the required parameters for listing sent trade offer history: - **steamloginsecure**: Cookie value from steamcommunity.com for authentication.

Exemple de requête

curl -H "X-Api-Key: YOUR_API_KEY" \
  "https://www.steamwebapi.com/steam/api/trade/sent/history"

Réponses

  • 200 Successfully retrieved sent trade offer history.
  • 401 Unauthorized access due to invalid or expired steamloginsecure.
  • 402 Rate limit exceeded (daily or monthly).
  • 404 No trade offer history found.
  • 421 Validation error for the request body.
  • 422 Validation error for JSON properties.
  • 425 Steam Error occurred.
PUT /steam/api/trade/cancel

❌ Cancel a Trade Offer on Steam

Baseurl: https://www.steamwebapi.com/steam/api/trade/cancel?key=YOUR_API_KEY 💬 **What this endpoint does:** - Cancels a trade offer on Steam. - Requires Steam credentials and the trade offer ID. 🛠️ **Features:** - Allows programmatically canceling trade offers. - Provides secure authentication using `steamloginsecure`. 🌐 **How to use:** - Provide required parameters (`steamloginsecure` and `tradeofferid`) in the request body. - Authenticate using your API key to access the endpoint.

Paramètres

Nom Type Requis Description
key string oui Your API key for authentication. Retrieve it from your Dashboard (top-right corner).
production string non If you run in production, please set this to 1. Default is 0. This is in future required, and if not set, you will get a warning.

Corps de la requête

JSON payload containing the required parameters for canceling a trade offer: - **steamloginsecure**: Cookie value from steamcommunity.com for authentication. - **tradeofferid**: The ID of the trade offer to cancel.

Exemple de requête

curl -H "X-Api-Key: YOUR_API_KEY" \
  "https://www.steamwebapi.com/steam/api/trade/cancel"

Réponses

  • 200 Trade offer successfully canceled.
  • 401 Unauthorized access. Invalid or expired steamloginsecure.
  • 402 Rate limit exceeded (daily or monthly).
  • 404 Specified game not found.
  • 410 Unauthorized access due to invalid or expired steamloginsecure.
  • 421 Validation error for the request body.
  • 422 Validation error for JSON properties.
  • 425 Steam Error occurred.
PUT /steam/api/trade/decline

❌ Decline a Trade Offer on Steam

Baseurl: https://www.steamwebapi.com/steam/api/trade/decline?key=YOUR_API_KEY 💬 **What this endpoint does:** - Declines an existing trade offer on Steam. - Requires Steam credentials and the trade offer ID. 🛠️ **Features:** - Programmatically declines trade offers. - Requires a valid `steamloginsecure` for authentication. 🌐 **How to use:** - Provide the required parameters (`steamloginsecure` and `tradeofferid`) in the request body. - Authenticate using your API key for access to the endpoint.

Paramètres

Nom Type Requis Description
key string oui Your API key for authentication. Retrieve it from your Dashboard (top-right corner).
production string non If you run in production, please set this to 1. Default is 0. This is in future required, and if not set, you will get a warning.

Corps de la requête

JSON payload containing the required parameters for declining a trade offer: - **steamloginsecure**: Cookie value from steamcommunity.com for authentication. - **tradeofferid**: The ID of the trade offer you want to decline.

Exemple de requête

curl -H "X-Api-Key: YOUR_API_KEY" \
  "https://www.steamwebapi.com/steam/api/trade/decline"

Réponses

  • 200 Trade offer successfully declined.
  • 401 Unauthorized access. Invalid or expired steamloginsecure.
  • 402 Rate limit exceeded (daily or monthly).
  • 404 Specified game not found.
  • 410 Unauthorized access due to invalid or expired steamloginsecure.
  • 421 Validation error for the request body.
  • 422 Validation error for JSON properties.
  • 425 Steam Error occurred.

Guides

Getting Started

Welcome to SteamWebAPI — a high-quality API service that gives developers seamless access to Steam game data, user profiles, inventories, item prices, and more. No direct Steam API dependency, no IP blocking risk.

SteamWebAPI is an independent service and is not affiliated with Valve, Steam, or any of their partners. All rights belong to their respective owners.


How to Use

Getting started takes three steps:

  1. Make a GET request to any API endpoint.
  2. Browse the endpoints in this reference — pick one from the sidebar.
  3. Send your API key in the recommended X-Api-Key HTTP header.

Authentication

Every production API request requires an API key. Use the header for new integrations:

Recommended HTTP Header

X-Api-Key: YOUR_API_KEY

Legacy Query Parameter

https://www.steamwebapi.com/steam/api/inventory?key=YOUR_API_KEY

The ?key= parameter remains supported for backward compatibility. Avoid query-string credentials in new applications.

How to Get an API Key

  1. Click "Login with Steam" to create an account.
  2. Go to your Dashboard → API Key.

Your Steam data is not stored by SteamWebAPI.

Is it Free?

The free tier provides limited access for initial integration work. Endpoint groups, premium data and limits depend on the selected plan; verify them on the pricing page before deployment.


Base URL

curl -H "X-Api-Key: YOUR_API_KEY" \
  "https://www.steamwebapi.com/steam/api/YOUR_ENDPOINT"

Responses

All responses are JSON. Errors include a descriptive error message field.


Supported Games

Game Shortname Status
CS2 cs2 Fully Tested
RUST rust Basic Tested
DOTA dota Basic Tested

Output Formats

Select the output format with the format query parameter. Default is JSON. Add pretty=1 to pretty-print JSON. The examples omit the repeated X-Api-Key header for readability.

# JSON (default)
/steam/api/inventory

# Pretty JSON
/steam/api/inventory?pretty=1

# Gzip-compressed download
/steam/api/items?format=gzip

# ZIP archive
/steam/api/items?format=zip

# CSV
/steam/api/items?format=csv

# YAML
/steam/api/items?format=yaml

# Interactive HTML table
/steam/api/items?format=table

# MySQL INSERTs
/steam/api/items?format=mysql_with_table

# MongoDB insertMany
/steam/api/items?format=mongo
format Description Content-Type
json JSON body (default) application/json
gzip Gzip-compressed JSON application/gzip
zip ZIP archive with JSON application/zip
csv CSV export (UTF-8 BOM) text/csv
tsv Tab-separated values text/tab-separated-values
xml XML document application/xml
yaml / yml YAML document application/x-yaml
table / view Interactive HTML table text/html
ndjson Newline-delimited JSON application/x-ndjson
jsonp JSON with callback application/javascript
mysql MySQL INSERT statements text/plain
mysql_with_table MySQL CREATE + INSERTs text/plain
pgsql PostgreSQL INSERT statements text/plain
pgsql_with_table PostgreSQL CREATE + INSERTs text/plain
mongo MongoDB insertMany script application/javascript

Supported Languages (Inventory API)

Languages are only supported by the Inventory API. The marketname field contains the item name in the selected language, while markethashname is always in English — it serves as a unique identifier and does not change with the language parameter.

Language API Value
العربية arabic
Български bulgarian
简体中文 schinese
繁體中文 tchinese
Čeština czech
Dansk danish
Nederlands dutch
English english
Suomi finnish
Français french
Deutsch german
Ελληνικά greek
Magyar hungarian
Bahasa Indonesia indonesian
Italiano italian
日本語 japanese
한국어 koreana
Norsk norwegian
Polski polish
Português portuguese
Português (Brasil) brazilian
Română romanian
Русский russian
Español spanish
Español (Latinoamérica) latam
Svenska swedish
ไทย thai
Türkçe turkish
Українська ukrainian
Tiếng Việt vietnamese

Third-Party Marketplaces

SteamWebAPI collects pricing data from the following external marketplaces for pricerealXXXX values:

  • Skinport
  • DMarket
  • Buff
  • CSGO.com
  • Tradeit
  • Skinpull
  • Waxpeer
  • Skinbaron

Item & Pricing Fields

Key Description
pricelatest Steam – Current lowest sell offer; null if no offer
pricelatestsell Steam – Price of the most recent sale
pricelatestsell24h Steam – Most recent sale within the last 24h window
pricelatestsell7d Steam – Most recent sale within the last 7 days
pricelatestsell30d Steam – Most recent sale within the last 30 days
pricelatestsell90d Steam – Most recent sale within the last 90 days
lateststeamsellat Steam – Timestamp of the most recent sale
latest10steamsales Steam – Last 10 daily sales as [date, price, volume]
pricemedian Steam – Median of the last 10 daily sales
pricemedian24h Steam – Volume-weighted median of sales in the last 24h
pricemedian7d Steam – Volume-weighted median of sales in the last 7 days
pricemedian30d Steam – Volume-weighted median of sales in the last 30 days
pricemedian90d Steam – Volume-weighted median of sales in the last 90 days
priceavg Steam – Average of the last 10 daily sales
priceavg24h Steam – Volume-weighted average of sales in the last 24h
priceavg7d Steam – Volume-weighted average of sales in the last 7 days
priceavg30d Steam – Volume-weighted average of sales in the last 30 days
priceavg90d Steam – Volume-weighted average of sales in the last 90 days
pricesafe Steam – Conservative listing anchor: avg of the 3 lowest period medians (24h/7d/30d/90d/latest), with launch-spike outliers (>5× the cheapest) filtered out, × 0.95
pricemin Steam – Minimum price over the last 90 days (sub-cent outliers filtered)
pricemax Steam – Maximum price over the last 90 days
pricemix Steam – Lowest of sell / offer / third-party real price
pricereal Third-Party – Lowest price from external markets
pricereal24h Third-Party – Lowest price 24h ago
pricereal7d Third-Party – Lowest price 7d ago
pricereal30d Third-Party – Lowest price 30d ago
pricerealmedian Third-Party – Median of 5 lowest external prices
winloss Third-Party vs Steam price difference (%)
buyorderprice Steam – Current highest buy order price
buyordermedian Steam – Median of the top 5 buy order prices
buyorderavg Steam – Average of the top 5 buy order prices
buyordervolume Steam – Sum of qty across all buy orders
offervolume Steam – Sum of qty across all sell offers
soldtoday Steam – Units sold today (current calendar day)
sold24h Steam – Units sold during the previous calendar day
sold7d Steam – Units sold in the last 7 days
sold30d Steam – Units sold in the last 30 days
sold90d Steam – Units sold in the last 90 days
soldtotal Steam – Total units sold across the full sales history Steam exposes (multi-year lifetime, not a rolling window)
hourstosold Steam – Estimated avg hours to sell a single listing (derived from sold24h & offervolume)
points Steam – Demand points: Σ qty × price across all buy orders
unstable 1 = unstable price (alltime volume ≤ 10), 0 = stable
unstablereason Reason for instability (nullable)
priceupdatedat Last time the scraper checked this item; price columns themselves only update on a successful USD scrape
markethashname Market hash name
marketname Market display name
slug URL-friendly identifier
isstattrack 1 = StatTrak™, 0 = not
isstar 1 = has star (★), 0 = no

Resources

Production Use

Use these parameters and best practices to build a stable, resilient integration on top of SteamWebAPI in production environments.


production=1 — Stable Versioning

The production=1 parameter ensures that your integration is not disrupted by unexpected changes introduced in API updates, and allows SteamWebAPI to monitor active production users.

Benefits

  • You receive the exact same response structure already working in your environment.
  • After two weeks, your request automatically upgrades to the new stable version — use this period to test.
  • You have enough time to adapt your integration before migrating to the new version.

Use version=latest to access the newest API response with all current changes even while in production mode.


critical=1 — Real-Time Safety Switch

In addition to production=1, the critical=1 parameter provides an automatic safety mechanism for real-time endpoints such as /inventory or /item.

For the /items endpoint, critical=1 is automatically activated in production mode. For all other endpoints it defaults to 0 but can be manually enabled.

What Does critical=1 Do?

  • The API automatically checks whether a critical issue has been flagged (very rare under normal circumstances).
  • If a critical issue is detected, all requests with critical=1 are temporarily blocked to prevent bad data.
  • You do not need to deactivate your endpoint manually — the system handles it automatically.

When Should You Use critical=1?

Enable it for any operation that depends on real-time data and has financial impact:

  • Skin deposit services (SkinPay, DMarket, BitSkins, etc.)
  • Automated trades via bots
  • Any purchase or trade flow where a wrong price causes a loss

Parameter Summary

Parameter Description
production=1 Use on all production endpoints — guarantees stable response structure.
version=latest Opt in to the latest response format even in production mode.
critical=1 Enables real-time safety switch. Auto-enabled on /items in production.

Best Practices

General

  • Always pass production=1 on every endpoint used in production.
  • Always pass critical=1 for real-time financial operations.
  • Pull /items prices every 30 minutes to 24 hours and cache them locally in your backend.
  • This endpoint is not a backend service — store the data yourself and wrap calls in try-catch.

Item Response Validation (Critical Operations)

Before using an item price in a trade, purchase, or bot decision, always verify two fields:

// ✅ Safe to use
if (item.unstable === false && item.checkedAt !== null) {
    // Price is validated and hasn't spiked > 10% vs. yesterday
    proceed();
}

// ⚠️ Do NOT use if:
// item.unstable === true   → price is flagged as unstable
// item.checkedAt === null  → price has not been validated yet

If checkedAt is null, the price has not yet been validated by the system. Do not use such items in critical operations.


Rate Limits & Subscriptions

  • Rate limits vary by plan — check your Dashboard for current limits.
  • Subscriptions are processed via Stripe — choose between an auto-renewing recurring plan or a one-time, non-renewing plan at checkout.
  • Newly released game items are typically added within 1–3 days.
  • All Pro plans include priority support.

Plans, Limits & Data

Choose an endpoint from the product you are building, then verify that endpoint group's access and limits before deployment.

Use the "What do you want to build?" helper in the sidebar when you are unsure which endpoint fits your project.

Which endpoint group do I need?

What you are building Start with Typical plan family
Inventory valuation or marketplace deposits /steam/api/inventory Inventory
Item catalogue or current Steam prices /steam/api/items Item or balanced
Marketplace comparison /price-api and market endpoints Item or Enterprise
Player profile or account context /steam/api/profile Profile or balanced
CS2 float inspection /steam/api/float Float

Access and request limits

Limits are assigned by endpoint group and plan. The pricing page is the commercial source of truth; your dashboard shows the limits active on your account. Do not assume a free or general limit applies to inventory, profile, history or bulk item endpoints.

Compare current plans and endpoint limits →

Data freshness

Freshness varies by source and product. Read the response timestamp fields and the product page coverage notes instead of assuming one global refresh interval. The public explorer shows current source and update times on a bounded sample.

Inspect live sample data →

Common error cases

Status Meaning Action
400 Invalid or missing input Check required parameters and accepted formats.
401 / 403 Authentication or plan access failed Send X-Api-Key and verify endpoint access.
404 Requested resource was not found Verify the identifier and supported game.
429 A rate limit was reached Honor Retry-After or select a suitable plan.
5xx Temporary service or upstream failure Retry idempotent calls with bounded backoff.

Production and Enterprise

For higher volume, custom marketplaces, custom data structures, scheduled delivery or contractually agreed support, use the Enterprise path. Operational and business verification is available in the Trust Center.

Enterprise → Trust Center →

Steam Trading API

The Steam Trading API offers a robust solution for facilitating game item trading without the need for a traditional Steam Trading Bot. Build platforms like Skinport, Skinbaron, or DMarket — or create your own instant skin buy/sell service.

You won't need a Node.js trade bot — our Tradeoffer API supports your marketplace, trading site, or any other innovative concept you have in mind.


Trade API Features

Feature Description
Create a Tradeoffer Generate trade offers for any desired item.
Accept a Tradeoffer Accept trade offers for any item you choose.
Cancel / Decline Cancel or decline trade offers as needed.
Tradeoffer Status Confirm and monitor trade statuses in real time.

What Can You Build?

  • Marketplaces
  • Trading Sites
  • Gambling Sites
  • Skin Upgraders
  • Deposit Systems
  • Price Aggregators

B2C vs. P2P Trading Models

B2C (Business-to-Customer)

In a B2C model your bot directly interacts with customers — similar to how Skinport, Skinbaron, and DMarket operate. You own an account where items are sent or received instantly without delay.

Challenge Difficulty
Retrieving the steamloginsecure cookie Low
Mobile confirmation when sending skins Low

P2P (Peer-to-Peer)

In a P2P model customers send items directly to the buyer. Platforms like Whitemarket, Waxpeer, or Buff use this approach — items reach the owner directly and are released by the seller after a delay.


SteamAuth — The Modern Approach

steamauth.app is a browser extension that lets your users share their Steam login cookie securely with your platform — no bot needed.

Many major marketplaces already use SteamAuth. With it your customers only need to install the extension — you can then retrieve inventory, trade status, and execute trade actions without any additional programming on the user's side.

P2P with SteamAuth (Recommended)

  • Your users install the SteamAuth browser extension (Chrome, Opera, Firefox).
  • You can then retrieve their steamloginsecure cookie via the extension.
  • Use our Trade API endpoints to create, accept, or cancel offers on their behalf.
  • No need for a traditional trade bot or manual cookie handling.

P2P without SteamAuth (Advanced)

Alternatively, you can build your own extension or solution and use our API endpoints with a steamloginsecure cookie that you obtain yourself.


SteamAuth Features

Feature Description
Inventory Data Access and share CS2 inventory securely with trusted websites.
Trade History View and analyze complete trading history.
Create Trades Initiate trades directly through connected websites.
Pending Trades Monitor all outgoing trade offers in one place.
Incoming Trades Review and respond to incoming trade offers.

Available for

  • Chrome
  • Opera
  • Firefox

Security & Authentication

All trade endpoints require a JSON payload and a valid steamloginsecure cookie obtained either via SteamAuth or manually from steamcommunity.com.

While our API can perform various trade actions, Steam still requires mobile confirmation for certain actions. We are actively exploring solutions for automated mobile confirmation and plan to provide an open-source solution in the future.


Quick Start

  1. Get your API key from the Dashboard.
  2. Have your users install SteamAuth (for P2P).
  3. Use the POST /steam/api/trade/create endpoint to create trade offers.
  4. Monitor status via the trade status endpoint.

For questions or assistance, feel free to contact us via the Dashboard or Discord.

Questions fréquentes

Comment obtenir une clé API pour SteamWebAPI ?

Inscrivez-vous en vous connectant avec votre compte Steam. Votre clé API est disponible dans le tableau de bord. Envoyez-la via l'en-tête X-Api-Key recommandé ; le paramètre ?key= historique reste pris en charge.

À quelles données puis-je accéder via l'API Steam ?

SteamWebAPI donne accès aux prix des items du Steam Market et à leur historique, aux inventaires des joueurs pour CS2, DOTA2 et d'autres jeux, aux valeurs de float des skins CS2, aux profils de joueurs, aux offres d'échange et aux outils d'exploration de marché. Toutes les données sont accessibles via de simples points de terminaison REST.

Y a-t-il un forfait gratuit disponible ?

Le forfait gratuit offre un accès API limité pour les premières intégrations. Les groupes de points de terminaison, l'accès premium et les limites dépendent du forfait choisi. Comparez les limites exactes sur notre page tarifaire.

Quel format de réponse l'API utilise-t-elle ?

Tous les points de terminaison de l'API renvoient des réponses JSON par défaut. L'API suit les conventions REST avec des codes de statut HTTP standard. Les requêtes réussies renvoient un code de statut 200 avec les données dans le corps de la réponse.