CS2 Steam Market Price Tracker avatar

CS2 Steam Market Price Tracker

Pricing

Pay per event

Go to Apify Store
CS2 Steam Market Price Tracker

CS2 Steam Market Price Tracker

Track CS2 Steam Market prices, listing counts, and price changes for skin trading watchlists and arbitrage workflows.

Pricing

Pay per event

Rating

0.0

(0)

Developer

Stas Persiianenko

Stas Persiianenko

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

7 days ago

Last modified

Categories

Share

Track Counter-Strike 2 Steam Community Market prices, listing counts, and watchlist changes with clean Apify datasets.

What does CS2 Steam Market Price Tracker do?

CS2 Steam Market Price Tracker extracts public Counter-Strike 2 market search data from the Steam Community Market for appid 730. It turns market search results into structured rows with numeric prices, listing counts, item metadata, direct Steam Market URLs, icon URLs, and timestamps.

Use it when you need repeatable CS2 skin price snapshots instead of manually copying values from Steam pages. The actor works with broad search queries such as AK-47, Case, or Doppler, and with exact market hash names such as AK-47 | Redline (Field-Tested) or Fracture Case.

Why use it for CS2 market monitoring?

Steam Market is useful in a browser, but it is not designed for scheduled analysis, alerting, or spreadsheet exports. This actor gives you a consistent dataset that can be exported to CSV, JSON, Excel, API integrations, webhooks, and MCP clients.

Typical uses include:

  • tracking lowest sell prices for a skin watchlist,
  • watching listing counts as a liquidity signal,
  • comparing current prices against a reference spreadsheet,
  • creating hourly or daily snapshots for dashboards,
  • feeding Discord, Slack, Telegram, or trading-bot alerts.

Who is it for?

CS2 skin traders

Traders can monitor a focused watchlist of skins, cases, stickers, capsules, gloves, and knives. Add exact marketHashNames, include referencePrices, and export priceChange plus priceChangePercent for alert rules.

Collectors and portfolio managers

Collectors can schedule daily snapshots for inventory-adjacent items and track whether target items move into a desired price range. Listing counts help distinguish a thin market from a liquid one.

Marketplace analysts

Analysts can run broad searches like Case, Doppler, Sticker, AWP, or M4A1-S and compare price distributions across result pages. The output is normalized enough for BI tools and notebooks.

Discord community operators

Community operators can connect Apify webhooks to bots and post watchlist updates when an item drops below a threshold, rises above a reference price, or changes listing count materially.

Automation builders

Bot developers can use the actor as a clean public-data source for Steam Market search snapshots. It does not log in, buy, sell, inspect private inventories, or bypass Steam restrictions.

What data can you extract?

The default dataset contains one row per Steam Market result that passes your filters.

FieldDescription
searchQueryQuery or exact market hash name that produced the row.
resultRankRank within the collected result stream.
marketHashNameSteam market hash name.
itemNameHuman-readable item name.
sellListingsNumber of current sell listings when Steam provides it.
sellPriceTextFormatted price text returned by Steam.
sellPriceParsed numeric lowest sell price.
currencyIdSteam currency ID used for the request.
referencePriceOptional baseline supplied by you.
priceChangeCurrent price minus reference price.
priceChangePercentPercent change against reference price.
marketUrlDirect Steam Community Market listing URL.
weaponOrItemTypeParsed item type when available from CS2 tags.
exteriorExterior / wear tag when available.
rarityRarity tag when available.
iconUrlSteam CDN icon URL.
scrapedAtISO timestamp for the snapshot.

How much does it cost to track CS2 Steam Market prices?

This actor uses pay-per-event pricing: a small start event plus a low per-item event. Your exact charge depends on your Apify plan tier and the number of market items saved.

EventFREEBRONZESILVERGOLDPLATINUMDIAMOND
Run start$0.005000$0.005000$0.005000$0.005000$0.005000$0.005000
Each item extracted$0.000030186$0.000026249$0.000020474$0.000015749$0.000010500$0.000010000

Example gross actor charges before Apify platform fees:

Example runItemsFREE estimateBRONZE estimateGOLD estimate
Small watchlist10~$0.0053~$0.0053~$0.0052
Default discovery run50~$0.0065~$0.0063~$0.0058
Larger market scan120~$0.0086~$0.0081~$0.0069
Broad scheduled scan500~$0.0201~$0.0181~$0.0129

To keep costs predictable, start with a small maxItems value, confirm the output shape, and then raise maxItems or maxPagesPerQuery for production monitoring.

Input overview

You can use either broad discovery queries, exact watchlist items, or both.

InputUse it for
searchQueriesBroad Steam Market searches such as AK-47, Case, or Sticker.
marketHashNamesExact watchlist items such as Fracture Case.
currencySteam currency ID. The default is usually USD.
maxItemsMaximum rows to save across the run.
resultsPerPageSteam search page size.
maxPagesPerQueryPagination limit per query.
minPrice / maxPriceOptional numeric price filters.
referencePricesBaseline prices for change calculations.
requestDelayMsDelay between Steam requests.

Example input: small discovery run

{
"searchQueries": ["AK-47", "Case"],
"currency": 1,
"maxItems": 50,
"resultsPerPage": 50,
"maxPagesPerQuery": 1,
"requestDelayMs": 750
}

Example input: exact watchlist with reference prices

{
"marketHashNames": [
"AK-47 | Redline (Field-Tested)",
"Fracture Case",
"M4A1-S | Decimator (Field-Tested)"
],
"referencePrices": {
"AK-47 | Redline (Field-Tested)": 28.5,
"Fracture Case": 0.55,
"M4A1-S | Decimator (Field-Tested)": 14.25
},
"currency": 1,
"maxItems": 25,
"requestDelayMs": 1000
}

How to run the actor in the Apify Console

  1. Open the actor page on Apify.
  2. Add one or more searchQueries or marketHashNames.
  3. Choose a Steam currency ID.
  4. Keep maxItems small for the first run.
  5. Run the actor.
  6. Open the Dataset tab and export the results as CSV, JSON, Excel, RSS, or via API.

API usage with Node.js

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const input = {
searchQueries: ['AK-47', 'Case'],
marketHashNames: ['AK-47 | Redline (Field-Tested)'],
referencePrices: {
'AK-47 | Redline (Field-Tested)': 28.5,
},
currency: 1,
maxItems: 50,
resultsPerPage: 50,
maxPagesPerQuery: 1,
requestDelayMs: 750,
};
const run = await client.actor('automation-lab/cs2-steam-market-price-tracker').call(input);
const { items } = await client.dataset(run.defaultDatasetId).listItems({ limit: 100 });
for (const item of items) {
console.log(item.marketHashName, item.sellPrice, item.sellListings, item.marketUrl);
}

API usage with Python

import os
from apify_client import ApifyClient
client = ApifyClient(os.environ['APIFY_TOKEN'])
run_input = {
'searchQueries': ['Doppler', 'Sticker'],
'marketHashNames': ['Fracture Case'],
'referencePrices': {'Fracture Case': 0.55},
'currency': 1,
'maxItems': 75,
'resultsPerPage': 50,
'maxPagesPerQuery': 2,
'requestDelayMs': 1000,
}
run = client.actor('automation-lab/cs2-steam-market-price-tracker').call(run_input=run_input)
items = client.dataset(run['defaultDatasetId']).list_items(limit=100).items
for item in items:
print(item['marketHashName'], item.get('sellPrice'), item.get('priceChangePercent'))

API usage with cURL

curl -X POST "https://api.apify.com/v2/acts/automation-lab~cs2-steam-market-price-tracker/runs?token=$APIFY_TOKEN" \
-H 'Content-Type: application/json' \
-d '{
"searchQueries": ["AK-47", "Case"],
"marketHashNames": ["AK-47 | Redline (Field-Tested)"],
"currency": 1,
"maxItems": 50,
"resultsPerPage": 50,
"maxPagesPerQuery": 1,
"requestDelayMs": 750
}'

After the run succeeds, fetch items from the run's defaultDatasetId:

$curl "https://api.apify.com/v2/datasets/DATASET_ID/items?clean=true&format=json&token=$APIFY_TOKEN"

MCP usage

Use the Apify MCP server with this actor when you want Claude Code, Claude Desktop, or another MCP-compatible client to run a market check for you.

Claude Code setup:

$claude mcp add apify https://mcp.apify.com/?tools=automation-lab/cs2-steam-market-price-tracker

Claude Desktop configuration:

{
"mcpServers": {
"apify-cs2-market": {
"url": "https://mcp.apify.com/?tools=automation-lab/cs2-steam-market-price-tracker"
}
}
}

Example prompts:

  • "Run the CS2 Steam Market Price Tracker for AK-47 and Case items and summarize the cheapest rows."
  • "Check my watchlist against these reference prices and show items down more than 5%."
  • "Export a CS2 market snapshot for Fracture Case and M4A1-S items that I can paste into a spreadsheet."

Watchlist monitoring workflow

For recurring monitoring, create a saved Apify task with marketHashNames and referencePrices. Schedule it hourly, every six hours, or daily depending on how frequently you need market updates.

A practical workflow is:

  1. maintain a spreadsheet of market hash names and target prices,
  2. pass that list to this actor,
  3. export the dataset after every run,
  4. compare priceChangePercent to your alert thresholds,
  5. send matches to Discord, Slack, Telegram, email, or a webhook endpoint.

Arbitrage research workflow

For broader discovery, use search terms that represent item families rather than exact items. Examples include Case, Sticker, Doppler, AWP, Knife, Gloves, M4A1-S, and AK-47.

Sort the resulting dataset by sellPrice, sellListings, rarity, or priceChangePercent. Treat the actor as a public market-data collector; it does not determine whether a trade is safe or profitable.

Price filtering tips

Use minPrice and maxPrice when you only care about a specific trading range. For example, a collector looking for items between $5 and $50 can filter before export and avoid downstream spreadsheet cleanup.

If Steam does not provide a parseable price for a row, the actor keeps the row unless your price filter requires a numeric comparison. This makes missing-price cases visible instead of silently hiding them.

Reliability tips

Steam may temporarily slow down, omit fields, or rate-limit aggressive request patterns. For reliable scheduled jobs:

  • keep requestDelayMs at 750 ms or higher,
  • avoid unnecessarily large maxPagesPerQuery values,
  • split very large watchlists into multiple scheduled tasks,
  • start with maxItems of 50 to 120 and increase only when needed,
  • retry later if Steam returns temporary server errors.

Integrations

The actor works well with:

  • Apify schedules for recurring snapshots,
  • Apify webhooks for alert pipelines,
  • Google Sheets or Airtable for watchlist review,
  • BI tools for price and listing-count history,
  • Discord or Slack bots for community notifications,
  • custom trading dashboards that read the dataset API.

Output example

{
"searchQuery": "AK-47",
"resultRank": 1,
"marketHashName": "AK-47 | Redline (Field-Tested)",
"itemName": "AK-47 | Redline",
"sellListings": 1284,
"sellPriceText": "$28.63",
"sellPrice": 28.63,
"currencyId": 1,
"referencePrice": 28.5,
"priceChange": 0.13,
"priceChangePercent": 0.46,
"marketUrl": "https://steamcommunity.com/market/listings/730/AK-47%20%7C%20Redline%20%28Field-Tested%29",
"weaponOrItemType": "Rifle",
"exterior": "Field-Tested",
"rarity": "Classified",
"iconUrl": "https://community.cloudflare.steamstatic.com/economy/image/...",
"scrapedAt": "2026-07-05T02:45:00.000Z"
}

Limitations

This actor reads public Steam Community Market search data. It does not log in to Steam, inspect private inventories, place buy orders, place sell orders, read trade history, or guarantee the accuracy of third-party trading decisions.

Steam controls the public market endpoint and can change response fields, rate limits, or availability. If a row is missing a price or tag, the actor preserves the available fields and leaves the unavailable values empty.

Legality and responsible use

Use this actor for lawful market research and monitoring of publicly available Steam Market pages. Respect Steam's terms, avoid excessive request rates, and do not use the output for fraud, spam, market manipulation, or attempts to bypass platform rules.

Troubleshooting

Why did my query return no rows?

Check the spelling of the market item. Exact market names must match Steam's wording, punctuation, and wear text. If in doubt, try a broader searchQueries value first and copy the returned marketHashName into your watchlist.

Why is sellPrice missing for some rows?

Steam sometimes returns formatted rows without a parseable lowest sell price. The actor keeps those rows with sellPriceText or metadata where available so you can review them instead of losing the result.

How do I reduce run cost?

Lower maxItems, lower maxPagesPerQuery, and use exact marketHashNames instead of broad discovery queries. The start event is fixed per run, so group small watchlist items into one scheduled task when possible.

Can I use a non-USD currency?

Yes. Set the Steam currency ID to the currency you need. The actor records that ID in currencyId and stores the formatted price text returned by Steam.

These related actors can support marketplace or gaming research workflows:

FAQ

Does the actor require Steam cookies?

No. The MVP uses public unauthenticated Steam Community Market search data.

Can it monitor exact skins?

Yes. Use marketHashNames for exact skins, cases, stickers, capsules, knives, or gloves.

Can it calculate price changes?

Yes. Provide referencePrices keyed by market hash name. The actor outputs priceChange and priceChangePercent when a current numeric price and reference price are both available.

Can it buy or sell items?

No. It only extracts public market data and stores it in an Apify dataset.

What is the safest first run?

Use one query, maxItems between 10 and 50, and the default delay. Review the dataset, then expand the input for scheduled monitoring.