Steam API endpoint
Resolves a search term to Steam apps via the store typeahead (title, appid, price, platforms, metascore). Best for title -> appid lookup; returns roughly ten results. For faceted, paginated search use /steam/search/results.
/steam/searchQuery parameters:
term (required) — the search term (e.g. portal).cc (optional, default us) — store country code (ISO); selects the price currency.l (optional, default en) — language code.Returns term, total, count, items[] (each: type, id, name, price (currency, initial, final), tiny_image, metascore, platforms (windows, mac, linux), controller_support, streamingvideo), and source_url.
| Field | Filled in, of 10 checked | Values in the sample |
|---|---|---|
| type | 10 | app in all 10 |
| id | 10 | |
| name | 10 | “Portal 2” and 9 other values |
| price | 8 | |
| tiny_image | 10 | shared.akamai.steamstatic.com |
| metascore | 4 | 72 to 95, median 77 |
| platforms | 10 | |
| controller_support | 6 | full in all 6 |
| Parameter | Type | Required | Default | Description | Example |
|---|---|---|---|---|---|
| term | string | Yes | Search term | portal | |
| cc | string | No | Store country code (ISO, selects currency) | ||
| l | string | No | Language code | ||
| x-api-key (header) | string | Yes | API key required |
curl -X GET "https://api.crawlora.net/api/v1/steam/search?term=portal" \ -H "x-api-key: $CRAWLORA_API_KEY"
{
"code": 200,
"msg": "OK",
"data": {
"term": "portal",
"total": 3,
"count": 3,
"items": [
{
"type": "app",
"id": 400,
"name": "Portal",
"price": {
"currency": "USD",
"initial": 999,
"final": 999
},
"metascore": "90",
"platforms": {
"windows": true,
"mac": true,
"linux": true
}
}
],
"source_url": "https://store.steampowered.com/api/storesearch/?term=portal&cc=us&l=en"
}
}Request schema
No body schema
Response schema
#/definitions/steam.searchResponseDoc
| Field | Type | Required | Enum | Bounds | Example | Description |
|---|---|---|---|---|---|---|
| code | integer | No | 200 | |||
| data | steam.SearchResponse | No | ||||
| data.count | integer | No | Number of results returned. | |||
| data.items | array | No | Store items matching the search term. | |||
| data.items[].controller_support | string | No | Level of controller support Steam lists for the item. | |||
| data.items[].id | integer | No | Steam id of the result. Use it with the app endpoint when `type` is `app`. | |||
| data.items[].metascore | string | No | Metacritic score of the item, returned as a string such as `90`. | |||
| data.items[].name | string | No | Name of the item on the Steam store. | |||
| data.items[].platforms | object | No | Operating systems the item supports. | |||
| data.items[].platforms.linux | boolean | No | Whether the title supports Linux. | |||
| data.items[].platforms.mac | boolean | No | Whether the title supports macOS. | |||
| data.items[].platforms.windows | boolean | No | Whether the title supports Windows. | |||
| data.items[].price | object | No | Current price of the item. Omitted when the store shows no price. | |||
| data.items[].price.currency | string | No | Currency code of the prices, such as `USD`. | |||
| data.items[].price.discount_percent | integer | No | Discount currently applied, as a percentage. | |||
| data.items[].price.final | integer | No | Price after any discount, in minor currency units such as cents. | |||
| data.items[].price.final_formatted | string | No | Price after any discount, formatted for display as Steam shows it. | |||
| data.items[].price.initial | integer | No | Price before any discount, in minor currency units such as cents. | |||
| data.items[].price.initial_formatted | string | No | Price before any discount, formatted for display as Steam shows it. | |||
| data.items[].streamingvideo | boolean | No | Whether Steam marks the item as streaming video. | |||
| data.items[].tiny_image | string | No | URL of a small image of the item. | |||
| data.items[].type | string | No | Kind of result, such as `app`. | |||
| data.source_url | string | No | URL the data was read from. | |||
| data.term | string | No | Search term that was used. | |||
| data.total | integer | No | Total number of matches Steam reports for the term. | |||
| msg | string | No | OK |
| Status | Description | Schema |
|---|---|---|
| 400 | Bad Request | #/definitions/app.Response |
| 503 | Service Unavailable | #/definitions/app.Response |
Use environment variables for secrets and keep Crawlora API keys server-side.
curl -X GET "https://api.crawlora.net/api/v1/steam/search?term=portal" \
-H "x-api-key: $CRAWLORA_API_KEY"