> **For coding agents and LLMs:** This is one Social Fetch marketing page (markdown export). For API orientation start with [`/llms.txt`](https://www.socialfetch.dev/llms.txt); for auth and crawl rules use [`/agents.txt`](https://www.socialfetch.dev/agents.txt); for every operation use [`/llms-endpoints.txt`](https://www.socialfetch.dev/llms-endpoints.txt).

## This page

- **On-site (HTML):** <https://www.socialfetch.dev/platforms/steam/apps-appid>
- **Markdown (.mdx) URL:** <https://www.socialfetch.dev/platforms/steam/apps-appid.mdx>

---

# Steam App API

One public app id in, the app record out: price, genres, tags, platforms, media, requirements and review summary.

`GET /v1/steam/apps/{appId}` takes an app id from a store URL, for example `620` for Portal 2 or `570` for Dota 2, and returns `data.app` with the app's details, media and review scores. That includes `name`, `type`, `url`, `developers`, `publishers`, `genres`, `categories`, `tags`, `languages`, `platforms`, `releaseDate`, `price`, `screenshots`, `trailers`, `purchaseOptions`, `reviewSummary`, `antiCheat`, `aiDisclosure` and the developer's `links`.

`country` (default `US`) sets the price currency and `language` (default `en`) sets the text. `data.incomplete` names any group that is temporarily unavailable, such as `store_item` or `tag_names`, so you can tell a partial record from a complete one. Branch on `data.lookupStatus`: `found` fills `data.app`, `not_found` returns it as null. An app that exists but is not sold in the requested country answers `not_found` with `data.unavailableInCountry` true and its `name`.

## Request

- **Endpoint:** `GET /v1/steam/apps/{appId}`
- **Credits:** 1 credit
Failed requests are free
A not-found answer is still charged
- **Input:** by app id
- **Full reference:** [docs](https://www.socialfetch.dev/docs/api/v1/steam/apps/appid/get)
- **Platform page:** [/platforms/steam](https://www.socialfetch.dev/platforms/steam)

## FAQ

### How do I fetch a Steam app by id?

Call GET /v1/steam/apps/{appId} with your Social Fetch key in x-api-key. Use the number from the store URL, for example 620, or pass the full store URL. Read data.lookupStatus, then data.app.

### What is in the app record?

data.app has name, type, url, developers, publishers, genres, categories, tags, languages, platforms, release date, price, screenshots, trailers, purchase options, review summaries, anti-cheat, the AI disclosure and the developer's links. Trailer entries carry HLS and DASH stream URLs for the full videos and MP4 and WebM URLs for the short silent previews. Fields not available for an app are null or empty.

### Can I get the price in another country?

Pass an ISO 3166-1 alpha-2 country code, for example country=de or country=jp. data.country echoes the country used. The price is in that store's currency, with final and initial amounts in hundredths of the currency unit (divide by 100, also for yen and won) and formatted strings when available. If the app exists but is not sold there, data.lookupStatus is not_found, data.unavailableInCountry is true and data.name carries the app's name.

### What does data.incomplete mean?

store_item means tags, languages, trailers, screenshots, compatibility ratings, purchase options, review summaries, anti-cheat, AI disclosure or links are temporarily unavailable. tag_names means the tag ids are present but their names are not. An empty array means the record is complete.

### How many credits does an app lookup cost?

Pricing is documented on the operation in the API registry (shown on this page). Confirm on every response with meta.creditsCharged: that field is the billing source of truth.
