Search games on the Steam store.
Searches the Steam store like its search page: game title, release date, price and store link, in the store's order. First page of results (up to 50 games). The price is in the store's display currency for the visitor's region, with cents (0 for free games, null when the store shows no price).
- Site
- Steam, United States
- Version
- v1
- Runs, last 7 days
- No reports yet
- sha256
- ef875c0c18d0…
Run it with your agent
after installing WieldAsk in plain words. Your agent finds this recipe and calls it:
“Search games on the Steam store.”
Read-only: it changes nothing on the site. No login needed.
{ "tool": "run", "arguments": { "recipe_id": "steampowered.com/search-titles", "params": { "query": "portal" } } }
Requests
sent from your browser, in order- 1GET/search/?termServer-rendered store search /search/?term=... (read-only GET). Each result is a.search_result_row: title in span.title, release date in .search_released, price in data-price-final (cents) on .search_price_discount_combined.
Parameters
from your agentReturns
to your agentWhere it can send
- store.steampowered.com
Anything else is blocked by the extension.
Reads from your session
Nothing. Your browser attaches the site's cookies by itself.
Used only in requests to the addresses on the left. Never sent to wield.run or your agent.
Checks
a run passes when- length(output.games) > `0`
- length(output.games[?starts_with(url, 'https://store.steampowered.com/app/')]) == length(output.games)
- length(output.games[?title != `null`]) == length(output.games)
Raw recipe
Served as canonical JSON from /api/v1/recipes/steampowered.com/search-titles, so its sha256 matches the ETag and the index.
curl -s https://wield.run/api/v1/recipes/steampowered.com/search-titles | shasum -a 256 # ef875c0c18d01132396710414869ceb8b97010dd4b598473d53668d5da7b9aa3
{ "description": "Searches the Steam store like its search page: game title, release date, price and store link, in the store's order. First page of results (up to 50 games). The price is in the store's display currency for the visitor's region, with cents (0 for free games, null when the store shows no price).", "effect": "read", "id": "steampowered.com/search-titles", "keywords": [ "steam", "steampowered", "games", "video games", "pc games", "valve", "store", "indie", "gaming", "spiele", "computerspiele", "videospiele", "steam store" ], "output": { "schema": { "properties": { "games": { "items": { "properties": { "price": { "description": "Price in the store's display currency (see description)", "type": [ "number", "null" ] }, "released": { "description": "Release date as shown by the store, e.g. '10 Oct, 2007'", "type": [ "string", "null" ] }, "title": { "type": "string" }, "url": { "type": "string" } }, "required": [ "title", "url" ], "type": "object" }, "type": "array" }, "query": { "type": "string" } }, "required": [ "query", "games" ], "type": "object" }, "value": "{query: params.query, games: steps.search.games[?title != `null` && href != `null`].{title: title, released: released || `null`, price: (price_cents && to_number(price_cents) / `100`) || `null`, url: href}}" }, "params": { "additionalProperties": false, "properties": { "query": { "description": "Game title or keyword, e.g. 'portal', 'stardew valley', 'hades'", "maxLength": 100, "minLength": 2, "type": "string" } }, "required": [ "query" ], "type": "object" }, "provenance": { "method": "har", "notes": "GET /search/?term=..., server-rendered HTML with a.search_result_row rows (title span.title, href on the row, release date, price cents in data-price-final). The q parameter is ignored by the store; term is the search parameter. Only the first page of results is read. The row href carries a tracking parameter that is kept as it is.", "recorded_at": "2026-11-08T16:16:01.000Z", "recorded_by": "wield-forge (claude-haiku agent)" }, "requires_login": false, "schema": "https://wield.run/schema/recipe/v1.json", "site": { "country": "US", "id": "steampowered.com", "language": "en", "name": "Steam", "origin": "https://store.steampowered.com", "origins": [ "https://store.steampowered.com" ] }, "steps": [ { "description": "Server-rendered store search /search/?term=... (read-only GET). Each result is a.search_result_row: title in span.title, release date in .search_released, price in data-price-final (cents) on .search_price_discount_combined.", "expect": { "assert": "status == `200` && contains(body, 'Steam Search')", "content_type": "html", "status": [ 200 ] }, "extract": { "html_items": { "games": { "fields": { "href": { "attr": "href", "selector": ":scope" }, "price_cents": { "attr": "data-price-final", "selector": ".search_price_discount_combined" }, "released": { "selector": "div.search_released" }, "title": { "selector": "span.title" } }, "max": 60, "selector": "a.search_result_row" } } }, "id": "search", "request": { "headers": { "Accept": "text/html" }, "method": "GET", "query": { "term": "{{params.query}}" }, "url": "/search/" } } ], "task": "Search games on the Steam store", "tos": { "notes": "Not reviewed. One search page per call, the same page a visitor loads. The site's terms on automated access were not checked.", "reviewed": false }, "verify": { "checks": [ "length(output.games) > `0`", "length(output.games[?starts_with(url, 'https://store.steampowered.com/app/')]) == length(output.games)", "length(output.games[?title != `null`]) == length(output.games)" ], "example_params": { "query": "portal" }, "max_ms": 5000 }, "version": 1 }